com.fasterxml.aalto.in.ByteBasedPName Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aalto-xml Show documentation
Show all versions of aalto-xml Show documentation
Ultra-high performance non-blocking XML processor (Stax/Stax2, SAX/SAX2)
/* Woodstox Lite ("wool") XML processor
*
* Copyright (c) 2006- Tatu Saloranta, [email protected]
*
* Licensed under the License specified in the file LICENSE which is
* included with the source code.
* You may not use this file except in compliance with the License.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.fasterxml.aalto.in;
/**
* This intermediate abstract class defines more specialized API needed
* by components like symbol tables, which need to provide efficient
* access to byte-based PNames. Byte-based names can be used to directly
* convert byte sequences to actual character-based names, without
* intervening byte-to-character decoding phase.
*/
public abstract class ByteBasedPName
extends PName
{
/**
* Since the hash is calculated different from the way eventual
* String's hash will be (bit faster, not significantly worse
* hashing uniformness), we need to store that hash here.
*/
protected final int mHash;
protected ByteBasedPName(String pname, String prefix, String ln,
int hash)
{
super(pname, prefix, ln);
mHash = hash;
}
/*
//////////////////////////////////////////////////////////
// Specialized comparators and accessors
//////////////////////////////////////////////////////////
*/
// From base class:
@Override
public abstract int getFirstQuad();
@Override
public abstract int getQuad(int index);
@Override
public abstract int sizeInQuads();
// additional ones:
public abstract boolean equals(int quad1, int quad2);
public abstract boolean equals(int[] quads, int qlen);
public abstract boolean hashEquals(int h, int quad1, int quad2);
public abstract boolean hashEquals(int h, int[] quads, int qlen);
/*
//////////////////////////////////////////////////////////
// Redefined standard methods
//////////////////////////////////////////////////////////
*/
/**
* Whether we should use internal hash, or the hash of prefixed
* name string itself is an open question. For now, let's use
* former.
*/
@Override
public int hashCode() { return mHash; }
}