/* Woodstox Lite ("wool") XML processor
*
* Copyright (c) 2006- Tatu Saloranta, tatu.saloranta@iki.fi
*
* 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;
/**
* Specialized implementation of PName: can be used for short Strings
* that consists of at most 8 bytes. In general this means ascii-only
* names (but possibly qualified by a short prefix)
*<p>
* 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
PName2
extends
ByteBasedPName
{
final int
mQuad1;
final int
mQuad2;
PName2(
String pname,
String prefix,
String ln, int
hash,
int
quad1, int
quad2)
{
super(
pname,
prefix,
ln,
hash);
mQuad1 =
quad1;
mQuad2 =
quad2;
}
@
Override
public
PName createBoundName(
NsBinding nsb)
{
PName2 newName = new
PName2(
_prefixedName,
_prefix,
_localName,
mHash,
mQuad1,
mQuad2);
newName.
_namespaceBinding =
nsb;
return
newName;
}
@
Override
public boolean
equals(int
quad1, int
quad2) {
return (
quad1 ==
mQuad1) && (
quad2 ==
mQuad2);
}
@
Override
public boolean
equals(int[]
quads, int
qlen) {
return (
qlen == 2)
&& (
quads[0] ==
mQuad1) && (
quads[1] ==
mQuad2);
}
@
Override
public boolean
hashEquals(int
h, int
quad1, int
quad2) {
return (
h ==
mHash) && (
quad1 ==
mQuad1) && (
quad2 ==
mQuad2);
}
@
Override
public boolean
hashEquals(int
h, int[]
quads, int
qlen) {
return (
h ==
mHash) && (
qlen == 2)
&& (
quads[0] ==
mQuad1) && (
quads[1] ==
mQuad2);
}
@
Override
public int
getFirstQuad() {
return
mQuad1;
}
@
Override
public int
getLastQuad() {
return
mQuad2;
}
@
Override
public int
getQuad(int
index) {
return (
index == 0) ?
mQuad1 :
mQuad2;
}
@
Override
public int
sizeInQuads() { return 2; }
}