001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 /*
019 * $Id: AttributeSetMethodGenerator.java 468649 2006-10-28 07:00:55Z minchau $
020 */
021
022 package org.apache.xalan.xsltc.compiler.util;
023
024 import org.apache.bcel.generic.ALOAD;
025 import org.apache.bcel.generic.ASTORE;
026 import org.apache.bcel.generic.ClassGen;
027 import org.apache.bcel.generic.Instruction;
028 import org.apache.bcel.generic.InstructionList;
029
030 /**
031 * @author Jacek Ambroziak
032 * @author Santiago Pericas-Geertsen
033 */
034 public final class AttributeSetMethodGenerator extends MethodGenerator {
035 private static final int DOM_INDEX = 1;
036 private static final int ITERATOR_INDEX = 2;
037 private static final int HANDLER_INDEX = 3;
038
039 private static final org.apache.bcel.generic.Type[] argTypes =
040 new org.apache.bcel.generic.Type[3];
041 private static final String[] argNames = new String[3];
042
043 static {
044 argTypes[0] = Util.getJCRefType(DOM_INTF_SIG);
045 argNames[0] = DOM_PNAME;
046 argTypes[1] = Util.getJCRefType(NODE_ITERATOR_SIG);
047 argNames[1] = ITERATOR_PNAME;
048 argTypes[2] = Util.getJCRefType(TRANSLET_OUTPUT_SIG);
049 argNames[2] = TRANSLET_OUTPUT_PNAME;
050 }
051
052
053 private final Instruction _aloadDom;
054 private final Instruction _astoreDom;
055 private final Instruction _astoreIterator;
056 private final Instruction _aloadIterator;
057 private final Instruction _astoreHandler;
058 private final Instruction _aloadHandler;
059
060 public AttributeSetMethodGenerator(String methodName, ClassGen classGen) {
061 super(org.apache.bcel.Constants.ACC_PRIVATE,
062 org.apache.bcel.generic.Type.VOID,
063 argTypes, argNames, methodName,
064 classGen.getClassName(),
065 new InstructionList(),
066 classGen.getConstantPool());
067
068 _aloadDom = new ALOAD(DOM_INDEX);
069 _astoreDom = new ASTORE(DOM_INDEX);
070 _astoreIterator = new ASTORE(ITERATOR_INDEX);
071 _aloadIterator = new ALOAD(ITERATOR_INDEX);
072 _astoreHandler = new ASTORE(HANDLER_INDEX);
073 _aloadHandler = new ALOAD(HANDLER_INDEX);
074 }
075
076 public Instruction storeIterator() {
077 return _astoreIterator;
078 }
079
080 public Instruction loadIterator() {
081 return _aloadIterator;
082 }
083
084 public int getIteratorIndex() {
085 return ITERATOR_INDEX;
086 }
087
088 public Instruction storeHandler() {
089 return _astoreHandler;
090 }
091
092 public Instruction loadHandler() {
093 return _aloadHandler;
094 }
095
096 public int getLocalIndex(String name) {
097 return INVALID_INDEX; // not available
098 }
099 }