Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.11


XalanElemCallTemplateAllocator.hpp
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #if !defined(XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133)
20 #define XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133
21 
22 
23 
24 // Base include file. Must be first.
26 
27 
28 
30 
31 
32 
34 
35 
36 
37 XALAN_CPP_NAMESPACE_BEGIN
38 
39 
40 
42 {
43 public:
44 
46 
47 #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS)
48  typedef ArenaBlock<data_type> ArenaBlockType;
49  typedef ArenaAllocator<data_type,
50  ArenaBlockType> ArenaAllocatorType;
51 #else
53 #endif
54 
56 
57  /**
58  * Construct an instance that will allocate blocks of the specified size.
59  *
60  * @param theBlockSize The block size.
61  */
63  MemoryManager& theManager,
64  size_type theBlockCount);
65 
67 
68  /**
69  * Construct an instance
70  *
71  * @param constructionContext context for construction of object
72  * @param stylesheetTree stylesheet containing element
73  * @param atts list of attributes for element
74  * @param lineNumber line number in document
75  * @param columnNumber column number in document
76  *
77  * @return A pointer to the new instance.
78  */
79  data_type*
80  create(
81  StylesheetConstructionContext& constructionContext,
82  Stylesheet& stylesheetTree,
83  const AttributeListType& atts,
84  XalanFileLoc lineNumber,
85  XalanFileLoc columnNumber);
86 
87  /**
88  * Determine if an object is owned by the allocator...
89  */
90  bool
91  ownsObject(const data_type* theObject)
92  {
93  return m_allocator.ownsObject(theObject);
94  }
95 
96  /**
97  * Delete all objects from the allocator.
98  */
99  void
101  {
102  m_allocator.reset();
103  }
104 
105  /**
106  * Get the number of ArenaBlocks currently allocated.
107  *
108  * @return The number of blocks.
109  */
110  size_type
112  {
113  return m_allocator.getBlockCount();
114  }
115 
116  /**
117  * Get size of an ArenaBlock, that is, the number
118  * of objects in each block.
119  *
120  * @return The size of the block
121  */
122  size_type
123  getBlockSize() const
124  {
125  return m_allocator.getBlockSize();
126  }
127 
128 private:
129 
130  // Not implemented...
132 
134  operator=(const XalanElemCallTemplateAllocator&);
135 
136  // Data members...
137  ArenaAllocatorType m_allocator;
138 };
139 
140 
141 
142 XALAN_CPP_NAMESPACE_END
143 
144 
145 
146 #endif // XALANELEMCALLTEMPLATEALLOCATOR_INCLUDE_GUARD_12455133
ArenaAllocator< data_type > ArenaAllocatorType
void reset()
Delete all objects from the allocator.
#define XALAN_XSLT_EXPORT
bool ownsObject(const data_type *theObject)
Determine if an object is owned by the allocator...
size_type getBlockCount() const
Get the number of ArenaBlocks currently allocated.
XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType
This class represents the base stylesheet or an "import" stylesheet.
Definition: Stylesheet.hpp:86
ArenaBlockType::size_type size_type
size_type getBlockSize() const
Get size of an ArenaBlock, that is, the number of objects in each block.

Interpreting class diagrams

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

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

Apache Logo