com.fasterxml.aalto.in
Class ByteBasedPNameTable

java.lang.Object
  extended by com.fasterxml.aalto.util.NameTable
      extended by com.fasterxml.aalto.in.ByteBasedPNameTable

public final class ByteBasedPNameTable
extends NameTable

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


Constructor Summary
ByteBasedPNameTable(int hashSize)
           
 
Method Summary
 ByteBasedPName addSymbol(int hash, String symbolStr, int colonIx, int[] quads, int qlen)
           
 ByteBasedPName addSymbol(int hash, String symbolStr, int colonIx, int firstQuad, int secondQuad)
           
static int calcHash(int firstQuad)
           
static int calcHash(int[] quads, int qlen)
           
static int calcHash(int firstQuad, int secondQuad)
           
static int[] calcQuads(byte[] wordBytes)
           
 ByteBasedPName findSymbol(int hash, int[] quads, int qlen)
          Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.
 ByteBasedPName findSymbol(int hash, int firstQuad, int secondQuad)
          Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.
 void markAsShared()
           
 boolean maybeDirty()
          Method called to check to quickly see if a child symbol table may have gotten additional entries.
 boolean mergeFromChild(ByteBasedPNameTable child)
           
 void nuke()
          Method used by test code, to reset state of the name table.
 int size()
           
 String toDebugString()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ByteBasedPNameTable

public ByteBasedPNameTable(int hashSize)
Method Detail

mergeFromChild

public boolean mergeFromChild(ByteBasedPNameTable child)

markAsShared

public void markAsShared()

nuke

public void nuke()
Method used by test code, to reset state of the name table.


size

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

maybeDirty

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

Specified by:
maybeDirty in class NameTable

findSymbol

public ByteBasedPName findSymbol(int hash,
                                 int firstQuad,
                                 int secondQuad)
Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.

Note: separate methods to optimize common case of relatively short element/attribute names (8 or less ascii characters)

Parameters:
firstQuad - int32 containing first 4 bytes of the pname; if the whole name less than 4 bytes, padded with zero bytes in front (zero MSBs, ie. right aligned)
secondQuad - int32 containing bytes 5 through 8 of the pname; if less than 8 bytes, padded with up to 4 zero bytes in front (zero MSBs, ie. right aligned)
Returns:
PName matching the symbol passed (or constructed for it)

findSymbol

public ByteBasedPName findSymbol(int hash,
                                 int[] quads,
                                 int qlen)
Finds and returns name matching the specified symbol, if such name already exists in the table; or if not, creates name object, adds to the table, and returns it.

Note: this is the general purpose method that can be called for names of any length. However, if name is less than 9 bytes long, it is preferable to call the version optimized for short names.

Parameters:
quads - Array of int32s, each of which contain 4 bytes of encoded name
qlen - Number of int32s, starting from index 0, in quads parameter
Returns:
PName matching the symbol passed (or constructed for it)

addSymbol

public ByteBasedPName addSymbol(int hash,
                                String symbolStr,
                                int colonIx,
                                int firstQuad,
                                int secondQuad)

addSymbol

public ByteBasedPName addSymbol(int hash,
                                String symbolStr,
                                int colonIx,
                                int[] quads,
                                int qlen)

calcHash

public static final int calcHash(int firstQuad)

calcHash

public static final int calcHash(int firstQuad,
                                 int secondQuad)

calcHash

public static final int calcHash(int[] quads,
                                 int qlen)

calcQuads

public static int[] calcQuads(byte[] wordBytes)

toString

public String toString()
Overrides:
toString in class Object

toDebugString

public String toDebugString()


Copyright © 2012 Fasterxml.com. All Rights Reserved.