Xalan-C++ API Reference  1.12.0
XalanAVTAllocator.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(XALANAVTALLOCATOR_INCLUDE_GUARD_12455133)
20 #define XALANAVTALLOCATOR_INCLUDE_GUARD_12455133
21 
22 
23 
24 // Base include file. Must be first.
26 
27 
28 
29 #include <xalanc/XSLT/AVT.hpp>
30 
31 
32 
34 
35 
36 
37 namespace XALAN_CPP_NAMESPACE {
38 
39 
40 
42 {
43 public:
44 
45  typedef AVT data_type;
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  */
62  XalanAVTAllocator(MemoryManager& theManager, size_type theBlockCount);
63 
65 
66  /**
67  * Create an instance.
68  *
69  * @param constructionContext context for construction of AVT
70  * @param locator the Locator for the AVT. May be null.
71  * @param name name of AVT
72  * @param stringedValue string value to parse
73  * @param resolvervresolver for namespace resolution
74  *
75  * @return A pointer to the new instance.
76  */
77  data_type*
78  create(
79  StylesheetConstructionContext& constructionContext,
80  const Locator* locator,
81  const XalanDOMChar* name,
82  const XalanDOMChar* stringedValue,
83  const PrefixResolver& resolver);
84 
85  /**
86  * Determine if an object is owned by the allocator...
87  */
88  bool
89  ownsObject(const data_type* theObject)
90  {
91  return m_allocator.ownsObject(theObject);
92  }
93 
94  /**
95  * Delete all objects from the allocator.
96  */
97  void
99  {
100  m_allocator.reset();
101  }
102 
103  /**
104  * Get the number of ArenaBlocks currently allocated.
105  *
106  * @return The number of blocks.
107  */
108  size_type
110  {
111  return m_allocator.getBlockCount();
112  }
113 
114  /**
115  * Get size of an ArenaBlock, that is, the number
116  * of objects in each block.
117  *
118  * @return The size of the block
119  */
120  size_type
121  getBlockSize() const
122  {
123  return m_allocator.getBlockSize();
124  }
125 
126 private:
127 
128  // Not implemented...
130 
132  operator=(const XalanAVTAllocator&);
133 
134  // Data members...
135  ArenaAllocatorType m_allocator;
136 };
137 
138 
139 
140 }
141 
142 
143 
144 #endif // XALANAVTALLOCATOR_INCLUDE_GUARD_12455133
size_type getBlockSize() const
Get size of an ArenaBlock, that is, the number of objects in each block.
This class defines an interface for classes that resolve namespace prefixes to their URIs...
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
Class to hold an Attribute Value Template.
Definition: AVT.hpp:58
void reset()
Delete all objects from the allocator.
ArenaAllocatorType::size_type size_type
bool ownsObject(const data_type *theObject)
Determine if an object is owned by the allocator...
#define XALAN_XSLT_EXPORT
ArenaAllocator< data_type > ArenaAllocatorType
ArenaBlock< data_type >::size_type size_type
size_type getBlockCount() const
Get the number of ArenaBlocks currently allocated.