This section was created to guide users on how to use some of the new features going into the Xalan source code base. Some of the features discussed in this section are based on feedback and questions posted on the xalan-c-users newsgroup. This section will cover the benefits of certain features and provide users with programming hints on how to utilize the features in their applications.
Pluggable memory management was added as a new feature in Xalan-C++
Version 1.8. This feature introduces an object called
which allows applications with stricter memory management requirements
to utilize a more efficient allocation method. This
object can be applied to each processor instance, thus recovery
procedures from memory leaks or processor crashes will be applied to
the associated instance only.
The memory management model is similar to the memory management feature provided by the Xerces-C++ XML Parser.
To apply memory management to your application, the
object needs to be specified in two stages:
MemoryManagerobject during initialization is to create a separate memory manager for the overall application. Example of how this can be done is shown in the example below:
// Initialization step static void XalanTransformer::initialize(MemoryManager* initMemoryManager=0);
// Create instance of XalanTransformer MemoryManager memMgrA; // memory manager object XalanTransformer transformerA(&memMgrA); MemoryManager memMgrB; XalanTransformer transformerB(&memMgrB); XalanTransformer transformerC(&memMgrB); // Uses same memory manager object as transformerB XalanTransformer transformerD; // Uses default static memory manager
The above method demonstrates how users can apply the basic pluggable memory management feature. Users also have the option of implementing their own memory manager. This can be done by simply writing methods for:
// Method for allocating memory void* allocate(size_t size);
// Method for deallocating memory void deallocate(void *p);
For an example of how to use this feature, please see the SimpleTransform sample that has been provided in the binary distributions.
Please feel free to give us feedback on what topics you would like to see.
Send comments to the Xalan Development Mailing List.