All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.aalto.in.PName3 Maven / Gradle / Ivy

There is a newer version: 1.3.3
Show newest version
package com.fasterxml.aalto.in;

/**
 * Specialized implementation of PName: can be used for medium-sized Strings
 * that consists of at most 9-12 bytes. These are less frequent than
 * shorter variations, but still somewhat common.
 *

* The reason for such specialized classes is mostly space efficiency; * and to a lesser degree performance. Both are achieved for short * Strings by avoiding another level of indirection (via quad arrays) */ public final class PName3 extends ByteBasedPName { final int mQuad1; final int mQuad2; final int mQuad3; PName3(String pname, String prefix, String ln, int hash, int[] quads) { super(pname, prefix, ln, hash); mQuad1 = quads[0]; mQuad2 = quads[1]; mQuad3 = quads[2]; } PName3(String pname, String prefix, String ln, int hash, int q1, int q2, int q3) { super(pname, prefix, ln, hash); mQuad1 = q1; mQuad2 = q2; mQuad3 = q3; } @Override public PName createBoundName(NsBinding nsb) { PName3 newName = new PName3(_prefixedName, _prefix, _localName, mHash, mQuad1, mQuad2, mQuad3); newName._namespaceBinding = nsb; return newName; } @Override public boolean equals(int quad1, int quad2) { // Implies quad length < 3, never matches return false; } @Override public boolean equals(int[] quads, int qlen) { return (qlen == 3) && (quads[0] == mQuad1) && (quads[1] == mQuad2) && (quads[2] == mQuad3); } @Override public boolean hashEquals(int h, int quad1, int quad2) { // Implies quad length < 3, never matches return false; } @Override public boolean hashEquals(int h, int[] quads, int qlen) { return (h == mHash) && (qlen == 3) && (quads[0] == mQuad1) && (quads[1] == mQuad2) && (quads[2] == mQuad3); } @Override public int getFirstQuad() { return mQuad1; } @Override public int getLastQuad() { return mQuad3; } @Override public int getQuad(int index) { if (index < 2) { return (index == 0) ? mQuad1 : mQuad2; } // Whatever would be returned for invalid index is arbitrary, so: return mQuad3; } @Override public int sizeInQuads() { return 3; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy