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.

dot

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

Apache Logo