## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.10

Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# KeyTable.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 #if !defined(XALAN_KEYTABLE_HEADER_GUARD)
    00017 #define XALAN_KEYTABLE_HEADER_GUARD
    00018
    00025
    00026
    00027
    00028 // Base include file.  Must be first.
    00029 #include "XSLTDefinitions.hpp"
    00030
    00031
    00032
    00033 #include <xalanc/XalanDOM/XalanDOMString.hpp>
    00034
    00035
    00036
    00037 #include <xalanc/Include/XalanVector.hpp>
    00038 #include <xalanc/Include/XalanMap.hpp>
    00039
    00040
    00041
    00042 #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
    00043
    00044
    00045
    00046 #include <xalanc/XPath/MutableNodeRefList.hpp>
    00047 #include <xalanc/XPath/XalanQNameByReference.hpp>
    00048
    00049
    00050
    00051 XALAN_CPP_NAMESPACE_BEGIN
    00052
    00053
    00054
    00055 class KeyDeclaration;
    00056 class NodeRefListBase;
    00057 class PrefixResolver;
    00058 class StylesheetExecutionContext;
    00059 class XalanElement;
    00060 class XalanDocument;
    00061 class XalanNode;
    00062
    00063
    00064
    00065
    00072
    00073 typedef XalanMap<XalanDOMString, MutableNodeRefList>    NodeListMapTypeDefinitions;
    00074 XALAN_USES_MEMORY_MANAGER(NodeListMapTypeDefinitions)
    00075
    00076
    00077 class KeyTable
    00078 {
    00079 public:
    00080
    00081     typedef XalanVector<KeyDeclaration>         KeyDeclarationVectorType;
    00082
    00083     typedef NodeListMapTypeDefinitions NodeListMapType;
    00084
    00085     typedef XalanMap<XalanQNameByReference, NodeListMapType>    KeysMapType;
    00086
    00096     KeyTable(
    00097             XalanNode*                          startNode,
    00098             const PrefixResolver&               resolver,
    00099             const KeyDeclarationVectorType&     keyDeclarations,
    00100             StylesheetExecutionContext&         executionContext);
    00101
    00102     static KeyTable*
    00103     create(MemoryManagerType& theManager,
    00104             XalanNode*                          startNode,
    00105             const PrefixResolver&               resolver,
    00106             const KeyDeclarationVectorType&     keyDeclarations,
    00107             StylesheetExecutionContext&         executionContext);
    00108
    00109     virtual
    00110     ~KeyTable();
    00111
    00124     const MutableNodeRefList&
    00125     getNodeSetByKey(
    00126                   const XalanQName&         qname,
    00127                   const XalanDOMString&     ref) const;
    00128
    00129 private:
    00130
    00131     static void
    00132     processKeyDeclaration(
    00133             KeysMapType&                    theKeys,
    00134             const KeyDeclaration&           kd,
    00135             XalanNode*                      testNode,
    00136             const PrefixResolver&           resolver,
    00137             StylesheetExecutionContext&     executionContext);
    00138
    00143     const XalanDocument*    m_docKey;
    00144
    00156
    00157     KeysMapType                         m_keys;
    00158
    00159     static const MutableNodeRefList     s_dummyList;
    00160 };
    00161
    00162
    00163
    00164 XALAN_CPP_NAMESPACE_END
    00165
    00166
    00167
    00168 #endif  // XALAN_KEYTABLE_HEADER_GUARD

Interpreting class diagrams

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

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