Top Description Inners Fields Constructors Methods
com.fasterxml.aalto.in

public Class CharBasedPNameTable

extends NameTable
Class Inheritance
Imports
com.fasterxml.aalto.util.NameTable

This is a symbol table implementation used for storing byte-based PNames, specifically, instances of (PNameC).

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class
CharBasedPNameTable.Bucket

This class is a symbol table entry.

Field Summary

Modifier and TypeField and Description
protected CharBasedPNameTable.Bucket[]
_buckets

Overflow buckets; if primary doesn't match, lookup is done from here.

protected boolean
_dirty

Flag that indicates if any changes have been made to the data; used to both determine if bucket array needs to be copied when (first) change is made, and potentially if updated bucket list is to be resync'ed back to master instance.

protected int
_indexMask

Mask used to get index from hash values; equal to mBuckets.length - 1, when mBuckets.length is a power of two.

protected int
_size

Current size (number of entries); needed to know if and when rehash.

protected int
_sizeThreshold

Limit that indicates maximum size this instance can hold before it needs to be expanded and rehashed.

protected PNameC[]
_symbols

Primary matching symbols; it's expected most match occur from here.

protected static final float
pack-priv static final int

Constructor Summary

AccessConstructor and Description
public
CharBasedPNameTable(int
Minimum initial size for bucket array; internally will always use a power of two equal to or bigger than this value.
initialSize
)

Main method for constructing a master symbol table instance; will be called by other public constructors.

pack-priv

Method Summary

Modifier and TypeMethod and Description
public PNameC
addSymbol(char[] buffer, int start, int len, int hash)

private void
copyArrays()

Method called when copy-on-write is needed; generally when first change is made to a derived symbol table.

public PNameC
findSymbol(char[] buffer, int start, int len, int hash)

public boolean
maybeDirty()

Implements abstract com.fasterxml.aalto.util.NameTable.maybeDirty.

Method called to check to quickly see if a child symbol table may have gotten additional entries.
public synchronized void
mergeFromChild(CharBasedPNameTable child)

Method that allows contents of child table to potentially be "merged in" with contents of this symbol table.

private void
rehash()

Method called when size (number of entries) of symbol table grows so big that load factor is exceeded.

public int

Field Detail

_bucketsback to summary
protected CharBasedPNameTable.Bucket[] _buckets

Overflow buckets; if primary doesn't match, lookup is done from here.

Note

Number of buckets is half of number of symbol entries, on assumption there's less need for buckets.

_dirtyback to summary
protected boolean _dirty

Flag that indicates if any changes have been made to the data; used to both determine if bucket array needs to be copied when (first) change is made, and potentially if updated bucket list is to be resync'ed back to master instance.

_indexMaskback to summary
protected int _indexMask

Mask used to get index from hash values; equal to mBuckets.length - 1, when mBuckets.length is a power of two.

_sizeback to summary
protected int _size

Current size (number of entries); needed to know if and when rehash.

_sizeThresholdback to summary
protected int _sizeThreshold

Limit that indicates maximum size this instance can hold before it needs to be expanded and rehashed. Calculated using fill factor passed in to constructor.

_symbolsback to summary
protected PNameC[] _symbols

Primary matching symbols; it's expected most match occur from here.

DEFAULT_FILL_FACTORback to summary
protected static final float DEFAULT_FILL_FACTOR
MIN_HASH_SIZEback to summary
pack-priv static final int MIN_HASH_SIZE

Constructor Detail

CharBasedPNameTableback to summary
public CharBasedPNameTable(int initialSize)

Main method for constructing a master symbol table instance; will be called by other public constructors.

Parameters
initialSize:int

Minimum initial size for bucket array; internally will always use a power of two equal to or bigger than this value.

CharBasedPNameTableback to summary
pack-priv CharBasedPNameTable(CharBasedPNameTable parent)

Method Detail

addSymbolback to summary
public PNameC addSymbol(char[] buffer, int start, int len, int hash)
copyArraysback to summary
private void copyArrays()

Method called when copy-on-write is needed; generally when first change is made to a derived symbol table.

findSymbolback to summary
public PNameC findSymbol(char[] buffer, int start, int len, int hash)
maybeDirtyback to summary
public boolean maybeDirty()

Implements abstract com.fasterxml.aalto.util.NameTable.maybeDirty.

Doc from com.fasterxml.aalto.util.NameTable.maybeDirty.

Method called to check to quickly see if a child symbol table may have gotten additional entries. Used for checking to see if a child table should be merged into shared table.

Annotations
@Override
mergeFromChildback to summary
public synchronized void mergeFromChild(CharBasedPNameTable child)

Method that allows contents of child table to potentially be "merged in" with contents of this symbol table.

Note that caller has to make sure symbol table passed in is really a child or sibling of this symbol table.

rehashback to summary
private void rehash()

Method called when size (number of entries) of symbol table grows so big that load factor is exceeded. Since size has to remain power of two, arrays will then always be doubled. Main work is really redistributing old entries into new String/Bucket entries.

sizeback to summary
public int size()

Implements abstract com.fasterxml.aalto.util.NameTable.size.

Annotations
@Override
com.fasterxml.aalto.in back to summary

pack-priv final Class CharBasedPNameTable.Bucket

extends Object
Class Inheritance

This class is a symbol table entry. Each entry acts as a node in a linked list.

Field Summary

Modifier and TypeField and Description
private final CharBasedPNameTable.Bucket
private final PNameC

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public PNameC
find(char[] buf, int start, int len, int hash)

public CharBasedPNameTable.Bucket
public PNameC
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

mNextback to summary
private final CharBasedPNameTable.Bucket mNext
mSymbolback to summary
private final PNameC mSymbol

Constructor Detail

Bucketback to summary
public Bucket(PNameC symbol, CharBasedPNameTable.Bucket next)

Method Detail

findback to summary
public PNameC find(char[] buf, int start, int len, int hash)
getNextback to summary
public CharBasedPNameTable.Bucket getNext()
getSymbolback to summary
public PNameC getSymbol()