/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * JFlex 1.8.2                                                             *
 * Copyright (C) 1998-2018  Gerwin Klein <lsf@jflex.de>                    *
 * All rights reserved.                                                    *
 *                                                                         *
 * License: BSD                                                            *
 *                                                                         *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

package jflex.core.unicode;

import java.util.Arrays;

Immutable second-level blocks for constructing the two-level character map table.
/** Immutable second-level blocks for constructing the two-level character map table. */
public class CMapBlock {
How many bits the second-level char map tables translate
/** How many bits the second-level char map tables translate */
public static final int BLOCK_BITS = 8;
Size of the second-level char map arrays
/** Size of the second-level char map arrays */
public static final int BLOCK_SIZE = 1 << BLOCK_BITS;
array of BLOCK_SIZE; reference immutable; contents intended to be as well
/** array of BLOCK_SIZE; reference immutable; contents intended to be as well */
public final int[] block;
pre-computed hash, since we will compare often
/** pre-computed hash, since we will compare often */
private final int hash;
Constructs new CMapBlock and pre-computes its hash
Params:
  • block – an int array of size @{link BLOCK_SIZE}.
/** * Constructs new CMapBlock and pre-computes its hash * * @param block an int array of size @{link BLOCK_SIZE}. */
public CMapBlock(int[] block) { assert block.length == BLOCK_SIZE : block; this.block = block; this.hash = Arrays.hashCode(block); } @Override public int hashCode() { return hash; } @Override public boolean equals(Object other) { return this == other || (other instanceof CMapBlock && hash == ((CMapBlock) other).hash && Arrays.equals(block, ((CMapBlock) other).block)); } }