ByteQuadsCanonicalizer
Date: 2016-12-03

com.fasterxml.jackson.core.sym

## Class ByteQuadsCanonicalizer

- java.lang.Object
- - com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer

-     public final class ByteQuadsCanonicalizer
      extends java.lang.Object

  Replacement for `BytesToNameCanonicalizer` which aims at more localized memory access due to flattening of name quad data. Performance improvement modest for simple JSON document data binding (maybe 3%), but should help more for larger symbol tables, or for binary formats like Smile.
  Since:
    2.6

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_reportTooManyCollisions()`
    `java.lang.String` | `addName(java.lang.String name, int q1)`
    `java.lang.String` | `addName(java.lang.String name, int[] q, int qlen)`
    `java.lang.String` | `addName(java.lang.String name, int q1, int q2)`
    `java.lang.String` | `addName(java.lang.String name, int q1, int q2, int q3)`
    `int` | `bucketCount()` Returns number of primary slots table has currently
    `int` | `calcHash(int q1)`
    `int` | `calcHash(int[] q, int qlen)`
    `int` | `calcHash(int q1, int q2)`
    `int` | `calcHash(int q1, int q2, int q3)`
    `static ByteQuadsCanonicalizer` | `createRoot()` Factory method to call to create a symbol table instance with a randomized seed value.
    `protected static ByteQuadsCanonicalizer` | `createRoot(int seed)` Factory method that should only be called from unit tests, where seed value should remain the same.
    `java.lang.String` | `findName(int q1)`
    `java.lang.String` | `findName(int[] q, int qlen)`
    `java.lang.String` | `findName(int q1, int q2)`
    `java.lang.String` | `findName(int q1, int q2, int q3)`
    `int` | `hashSeed()`
    `ByteQuadsCanonicalizer` | `makeChild(int flags)` Factory method used to create actual symbol table instance to use for parsing.
    `boolean` | `maybeDirty()` Method called to check to quickly see if a child symbol table may have gotten additional entries.
    `int` | `primaryCount()` Method mostly needed by unit tests; calculates number of entries that are in the primary slot set.
    `void` | `release()` Method called by the using code to indicate it is done with this instance.
    `int` | `secondaryCount()` Method mostly needed by unit tests; calculates number of entries in secondary buckets
    `int` | `size()`
    `int` | `spilloverCount()` Method mostly needed by unit tests; calculates number of entries in shared spillover area
    `int` | `tertiaryCount()` Method mostly needed by unit tests; calculates number of entries in tertiary buckets
    `java.lang.String` | `toString()`
    `int` | `totalCount()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### createRoot

          public static ByteQuadsCanonicalizer createRoot()

      Factory method to call to create a symbol table instance with a randomized seed value.

    - #### createRoot

          protected static ByteQuadsCanonicalizer createRoot(int seed)

      Factory method that should only be called from unit tests, where seed value should remain the same.

    - #### makeChild

          public ByteQuadsCanonicalizer makeChild(int flags)

      Factory method used to create actual symbol table instance to use for parsing.

    - #### release

          public void release()

      Method called by the using code to indicate it is done with this instance. This lets instance merge accumulated changes into parent (if need be), safely and efficiently, and without calling code having to know about parent information

    - #### size

          public int size()

    - #### bucketCount

          public int bucketCount()

      Returns number of primary slots table has currently

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

    - #### hashSeed

          public int hashSeed()

    - #### primaryCount

          public int primaryCount()

      Method mostly needed by unit tests; calculates number of entries that are in the primary slot set. These are "perfect" entries, accessible with a single lookup

    - #### secondaryCount

          public int secondaryCount()

      Method mostly needed by unit tests; calculates number of entries in secondary buckets

    - #### tertiaryCount

          public int tertiaryCount()

      Method mostly needed by unit tests; calculates number of entries in tertiary buckets

    - #### spilloverCount

          public int spilloverCount()

      Method mostly needed by unit tests; calculates number of entries in shared spillover area

    - #### totalCount

          public int totalCount()

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### findName

          public java.lang.String findName(int q1)

    - #### findName

          public java.lang.String findName(int q1,
                                  int q2)

    - #### findName

          public java.lang.String findName(int q1,
                                  int q2,
                                  int q3)

    - #### findName

          public java.lang.String findName(int[] q,
                                  int qlen)

    - #### addName

          public java.lang.String addName(java.lang.String name,
                                 int q1)

    - #### addName

          public java.lang.String addName(java.lang.String name,
                                 int q1,
                                 int q2)

    - #### addName

          public java.lang.String addName(java.lang.String name,
                                 int q1,
                                 int q2,
                                 int q3)

    - #### addName

          public java.lang.String addName(java.lang.String name,
                                 int[] q,
                                 int qlen)

    - #### calcHash

          public int calcHash(int q1)

    - #### calcHash

          public int calcHash(int q1,
                     int q2)

    - #### calcHash

          public int calcHash(int q1,
                     int q2,
                     int q3)

    - #### calcHash

          public int calcHash(int[] q,
                     int qlen)

    - #### _reportTooManyCollisions

          protected void _reportTooManyCollisions()