Class CharBasedPNameTable

java.lang.Object
com.fasterxml.aalto.util.NameTable
com.fasterxml.aalto.in.CharBasedPNameTable

public class CharBasedPNameTable extends NameTable
This is a symbol table implementation used for storing byte-based PNames, specifically, instances of (PNameC).
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected com.fasterxml.aalto.in.CharBasedPNameTable.Bucket[]
    Overflow buckets; if primary doesn't match, lookup is done from here.
    protected boolean
    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
    Mask used to get index from hash values; equal to mBuckets.length - 1, when mBuckets.length is a power of two.
    protected int
    Current size (number of entries); needed to know if and when rehash.
    protected int
    Limit that indicates maximum size this instance can hold before it needs to be expanded and rehashed.
    protected PNameC[]
    Primary matching symbols; it's expected most match occur from here.
    protected static final float
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    CharBasedPNameTable(int initialSize)
    Main method for constructing a master symbol table instance; will be called by other public constructors.
  • Method Summary

    Modifier and Type
    Method
    Description
    addSymbol(char[] buffer, int start, int len, int hash)
     
    findSymbol(char[] buffer, int start, int len, int hash)
     
    boolean
    Method called to check to quickly see if a child symbol table may have gotten additional entries.
    void
    Method that allows contents of child table to potentially be "merged in" with contents of this symbol table.
    int
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEFAULT_FILL_FACTOR

      protected static final float DEFAULT_FILL_FACTOR
      See Also:
    • _symbols

      protected PNameC[] _symbols
      Primary matching symbols; it's expected most match occur from here.
    • _buckets

      protected com.fasterxml.aalto.in.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.

    • _size

      protected int _size
      Current size (number of entries); needed to know if and when rehash.
    • _sizeThreshold

      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.
    • _indexMask

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

      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.
  • Constructor Details

    • CharBasedPNameTable

      public CharBasedPNameTable(int initialSize)
      Main method for constructing a master symbol table instance; will be called by other public constructors.
      Parameters:
      initialSize - Minimum initial size for bucket array; internally will always use a power of two equal to or bigger than this value.
  • Method Details

    • mergeFromChild

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

    • size

      public int size()
      Specified by:
      size in class NameTable
    • maybeDirty

      public boolean maybeDirty()
      Description copied from class: NameTable
      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.
      Specified by:
      maybeDirty in class NameTable
    • findSymbol

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

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