## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.9

Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

# XalanDOMStringHashTable Class Reference

Collaboration diagram for XalanDOMStringHashTable:

[legend]
List of all members.

## Public Types

- typedef XalanVector< const
  XalanDOMString * > BucketType
- typedef BucketType::size_type bucket_size_type
- typedef XalanVector< bucket_size_type > BucketCountsType
- enum { eDefaultBucketCount = 101, eDefaultBucketSize = 15 }

## Public Member Functions

- XalanDOMStringHashTable (MemoryManagerType &theManager, size_t theBucketCount=eDefaultBucketCount, bucket_size_type theBucketSize=eDefaultBucketSize)
    Create a hash table.
- ~XalanDOMStringHashTable ()
- void clear ()
    Clear the hash table.
- size_t size () const
    Get the number of strings in the table.
- size_t bucketCount () const
    Get the number of buckets in the table.
- void getBucketCounts (BucketCountsType &theVector) const
    Get the size of each of the buckets in the table.
- size_t collisions () const
    Get the collision count.
- const XalanDOMString * find (const XalanDOMString &theString, size_t *theBucketIndex=0) const
    Find a string.
- const XalanDOMString * find (const XalanDOMChar *theString, XalanDOMString::size_type theLength=XalanDOMString::npos, size_t *theBucketIndex=0) const
    Find a string.
- void insert (const XalanDOMString &theString)
    Insert a pointer to a string into the table.
- void insert (const XalanDOMString &theString, size_t theBucketIndex)
    Insert a pointer to a string into the table.
- MemoryManagerType & getMemoryManager ()
- const MemoryManagerType & getMemoryManager () const

## Member Typedef Documentation

typedef BucketType::size_type XalanDOMStringHashTable::bucket_size_type

typedef XalanVector<bucket_size_type> XalanDOMStringHashTable::BucketCountsType

typedef XalanVector<const XalanDOMString*> XalanDOMStringHashTable::BucketType

## Member Enumeration Documentation

anonymous enum

Enumeration values:

  eDefaultBucketCount |
  eDefaultBucketSize |

## Constructor & Destructor Documentation

XalanDOMStringHashTable::XalanDOMStringHashTable | ( | MemoryManagerType & | theManager,
|  | size_t | theBucketCount = eDefaultBucketCount,
|  | bucket_size_type | theBucketSize = eDefaultBucketSize
| ) | `[explicit]`

Create a hash table.

Parameters:

  theBucketCount | The number of buckets to use for the hash table. This should be a prime number for best results.
  theBucketSize | The initial size of each bucket in the hash table.

XalanDOMStringHashTable::~XalanDOMStringHashTable | ( |  | ) |

## Member Function Documentation

size_t XalanDOMStringHashTable::bucketCount | ( |  | ) | const

Get the number of buckets in the table.

Returns:
  The number of buckets in the table

void XalanDOMStringHashTable::clear | ( |  | ) |

| Clear the hash table.

size_t XalanDOMStringHashTable::collisions | ( |  | ) | const

Get the collision count.

Release builds will always return 0.

Returns:
  The number of collisions. Valid only for non-release builds.

const XalanDOMString* XalanDOMStringHashTable::find | ( | const XalanDOMChar * | theString,
|  | XalanDOMString::size_type | theLength = XalanDOMString::npos,
|  | size_t * | theBucketIndex = 0
| ) | const

Find a string.

If the string is not found, return null. If theBucketIndex is not null, the variable pointed to will be updated with the bucket index that was calculated for the string. This index can be used in a later call to insert() to avoid recalculating the index.

Parameters:

  theString | The string to find.
  theLength | The number of characters in the string.
  theBucketIndex | A pointer to an unsigned int to get the bucket index

Returns:
  a pointer to the string, or null if not found.

const XalanDOMString* XalanDOMStringHashTable::find | ( | const XalanDOMString & | theString,
|  | size_t * | theBucketIndex = 0
| ) | const

Find a string.

If the string is not found, return null.

Parameters:

  theString | The string to find.
  theBucketIndex | The index of the bucket for the string.

Returns:
  a pointer to the string, or null if not found.

void XalanDOMStringHashTable::getBucketCounts | ( | BucketCountsType & | theVector | ) | const

Get the size of each of the buckets in the table.

Parameters:

  A | vector to return the bucket counts.

const MemoryManagerType& XalanDOMStringHashTable::getMemoryManager | ( |  | ) | const

MemoryManagerType& XalanDOMStringHashTable::getMemoryManager | ( |  | ) |

void XalanDOMStringHashTable::insert | ( | const XalanDOMString & | theString,
|  | size_t | theBucketIndex
| ) |

Insert a pointer to a string into the table.

If the string is already present, the string will still be added, but it will never be found, since it will be placed after the identical string. theBucketIndex _must_ be the index returned from a previous call to find. If not, then the behavior is undefined. This is meant as an optimization to avoid re-hashing the string.

Note that this class only stores a _pointer_ to a XalanDOMString. It's expected that the string will be allocated and managed outside of the hash table.

Parameters:

  theString | The string to insert.
  theBucketIndex | The index of the bucket for the string.

void XalanDOMStringHashTable::insert | ( | const XalanDOMString & | theString | ) |

Insert a pointer to a string into the table.

If the string is already present, the string will still be added, but it will never be found, since it will be placed after the identical string.

Note that this class only stores a _pointer_ to a XalanDOMString. It's expected that the string will be allocated and managed outside of the hash table.

Parameters:

  theString | The string to insert.

size_t XalanDOMStringHashTable::size | ( |  | ) | const

Get the number of strings in the table.

Returns:
  The number of strings in the table

The documentation for this class was generated from the following file:

- XalanDOMStringHashTable.hpp

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.9 Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.