You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mh...@apache.org on 2004/11/05 00:11:03 UTC
cvs commit: xml-xalan/c/src/xalanc/Include XalanDeque.hpp XalanMemoryManagement.hpp XalanVector.hpp
mhoyt 2004/11/04 15:11:03
Modified: c/src/xalanc/Include XalanDeque.hpp
XalanMemoryManagement.hpp XalanVector.hpp
Log:
Fix to enable XalanDeque to work with values that require a MemoryManager and provide an alternative to declaring a traits specialization.
Revision Changes Path
1.4 +4 -3 xml-xalan/c/src/xalanc/Include/XalanDeque.hpp
Index: XalanDeque.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/XalanDeque.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XalanDeque.hpp 17 Oct 2004 00:25:58 -0000 1.3
+++ XalanDeque.hpp 4 Nov 2004 23:11:03 -0000 1.4
@@ -156,7 +156,7 @@
/**
* Xalan implementation of deque
*/
-template <class Type>
+template <class Type, class ConstructionTraits = MemoryManagedConstructionTraits<Type> >
class XalanDeque
{
public:
@@ -169,7 +169,7 @@
typedef Type& reference;
typedef const Type& const_reference;
- typedef XalanVector<Type> BlockType;
+ typedef XalanVector<Type, ConstructionTraits> BlockType;
typedef XalanVector<BlockType*> BlockIndexType;
@@ -335,11 +335,12 @@
void resize(size_type newSize)
{
+ typename ConstructionTraits::Constructor::ConstructableType defaultValue(*m_memoryManager);
if (newSize > size())
{
for (size_type i = 0; i < newSize - size(); ++i)
{
- push_back(value_type());
+ push_back(defaultValue.value);
}
}
else
1.5 +38 -0 xml-xalan/c/src/xalanc/Include/XalanMemoryManagement.hpp
Index: XalanMemoryManagement.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/XalanMemoryManagement.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XalanMemoryManagement.hpp 17 Oct 2004 20:36:44 -0000 1.4
+++ XalanMemoryManagement.hpp 4 Nov 2004 23:11:03 -0000 1.5
@@ -32,11 +32,33 @@
typedef XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager MemoryManagerType;
+template <class C>
+struct ConstructValueWithNoMemoryManager
+{
+ ConstructValueWithNoMemoryManager(MemoryManagerType& /*mgr*/) :
+ value()
+ {
+ }
+
+ const C value;
+};
+
+template <class C>
+struct ConstructValueWithMemoryManager
+{
+ ConstructValueWithMemoryManager(MemoryManagerType& mgr) :
+ value(mgr)
+ {
+ }
+ const C value;
+};
template <class C>
struct ConstructWithNoMemoryManager
{
+ typedef ConstructValueWithNoMemoryManager<C> ConstructableType;
+
static C* construct(C* address, MemoryManagerType& /* mgr */)
{
return (C*) new (address) C;
@@ -51,6 +73,8 @@
template <class C>
struct ConstructWithMemoryManager
{
+ typedef ConstructValueWithNoMemoryManager<C> ConstructableType;
+
static C* construct(C* address, MemoryManagerType& mgr)
{
return (C*) new (address) C(mgr);
@@ -66,6 +90,7 @@
struct MemoryManagedConstructionTraits
{
typedef ConstructWithNoMemoryManager<C> Constructor;
+
};
#define XALAN_USES_MEMORY_MANAGER(Type) \
@@ -76,6 +101,19 @@
{ \
typedef ConstructWithMemoryManager<Type> Constructor; \
};
+
+template <class C>
+struct ConstructWithMemoryManagerTraits
+{
+ typedef ConstructWithMemoryManager<C> Constructor;
+};
+
+template <class C>
+struct ConstructWithNoMemoryManagerTraits
+{
+ typedef ConstructWithNoMemoryManager<C> Constructor;
+};
+
1.8 +2 -2 xml-xalan/c/src/xalanc/Include/XalanVector.hpp
Index: XalanVector.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/XalanVector.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XalanVector.hpp 17 Oct 2004 00:25:58 -0000 1.7
+++ XalanVector.hpp 4 Nov 2004 23:11:03 -0000 1.8
@@ -50,7 +50,7 @@
#pragma warning(disable: 4100)
#endif
-template <class Type>
+template <class Type, class ConstructionTraits = MemoryManagedConstructionTraits<Type> >
class XalanVector
{
public:
@@ -106,7 +106,7 @@
typedef XalanVector<value_type> ThisType;
- typedef typename MemoryManagedConstructionTraits<value_type>::Constructor Constructor;
+ typedef typename ConstructionTraits::Constructor Constructor;
XalanVector(
MemoryManagerType* theManager = 0,
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org