logolineright
bottomhttp://xml.apache.org/http://www.apache.org/http://www.w3.org/
join
Xalan-C++ 1.10
Overview
Charter
What's New
separator
Downloads
Build Instructions
Installation
separator
Sample Apps
Command Line
Usage Patterns
separator
Programming
Extensions
Extensions Library
API Reference
separator
FAQs
separator
Bugs
Testing
close
Introduction
 

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 was based on feedback and questions posted on the xalan-c-users newsgroup postings. 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
 

Pluggable memory management was added as a new feature in Xalan-C++ version 1.10. This feature introduces an object called MemoryManager which allows applications with stricter memory management requirements to utilize a more efficient allocation method. This MemoryManager 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 Xerces-C++. For more information on the Xerces-C++ memory management feature, please see Pluggable Memory Manager.

How To Use This Feature
 

To apply memory management to your application, the MemoryManager object needs to be specified in two stages:

  • At initialization phase. The purpose of specifying a MemoryManager object 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);
    
  • Creation of a transformer instance. This creates a unique memory manager for the instance of the processor. This step is optional. If no memory manager is provided, the global heap is used as the memory source. Example of this is shown below:

    // 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);

and

// 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.



More Topics
 

Please feel free to give us feedback on what topics you would like to see



dot
Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.