org.apache.xalan.xsltc.compiler.util.MarkerInstruction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of serializer Show documentation
Show all versions of serializer Show documentation
Serializer to write out XML, HTML etc. as a stream of characters from an input DOM or from input
SAX events.
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
/*
* $Id: MarkerInstruction.java 1225426 2011-12-29 04:13:08Z mrglavas $
*/
package org.apache.xalan.xsltc.compiler.util;
import java.io.DataOutputStream;
import java.io.IOException;
import org.apache.bcel.Constants;
import org.apache.bcel.generic.ConstantPoolGen;
import org.apache.bcel.generic.Instruction;
import org.apache.bcel.generic.Visitor;
/**
* A special abstract dummy subclass of
* {@link org.apache.bcel.generic.Instruction} used to mark locations of
* interest in an {@link org.apache.bcel.generic.InstructionList}. It and
* its subclasses are only used as placeholders, and do not contribute to the
* actual byte code instruction stream.
*/
abstract class MarkerInstruction extends Instruction {
/**
* Zero-argument constructor. Sets the opcode to an invalid value and
* sets the length to zero, as it will not be written as part of the
* generated byte code.
*/
public MarkerInstruction() {
super(Constants.UNDEFINED, (short) 0);
}
/**
* {@link org.apache.bcel.generic.Visitor}s will know nothing about this
* kind of {@link org.apche.bcel.generic.Instruction}, so this method does
* nothing.
*/
public void accept(Visitor v) {
}
/**
* The number of JVM stack entries consumed by the instruction.
* This instruction is just a place holder, so it does not consume any
* stack entries.
* @param cpg The {@link org.apache.bcel.generic.ConstantPoolGen} for the
* current {@link org.apache.bcel.generic.ClassGen}
* @return 0
always
*/
final public int consumeStack(ConstantPoolGen cpg) {
return 0;
}
/**
* The number of JVM stack entries produced by the instruction.
* This instruction is just a place holder, so it does not produce any
* stack entries.
* @param cpg The {@link org.apache.bcel.generic.ConstantPoolGen} for the
* current {@link org.apache.bcel.generic.ClassGen}
* @return 0
always
*/
final public int produceStack(ConstantPoolGen cpg) {
return 0;
}
/**
* Produce a copy of the instruction. By default a
* {@link MarkerInstruction} has no parameters, so the base implementation
* of {@link #copy()} returns the instruction itself.
* @return The instruction itself.
*/
public Instruction copy() {
return this;
}
/**
* Dump instruction as byte code to stream out. A {@link MarkerInstruction}
* has no effect on the generated byte code so it is never emitted to the
* output stream.
* @param out Output stream
*/
final public void dump(DataOutputStream out) throws IOException {
}
}