1/* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5/* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22package com.sun.org.apache.xalan.internal.xsltc.compiler; 23 24import java.util.Vector; 25 26import com.sun.org.apache.bcel.internal.generic.InstructionList; 27import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator; 28import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg; 29import com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator; 30import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; 31import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; 32import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; 33 34class TopLevelElement extends SyntaxTreeNode { 35 36 /* 37 * List of dependencies with other variables, parameters or 38 * keys defined at the top level. 39 */ 40 protected Vector _dependencies = null; 41 42 /** 43 * Type check all the children of this node. 44 */ 45 public Type typeCheck(SymbolTable stable) throws TypeCheckError { 46 return typeCheckContents(stable); 47 } 48 49 /** 50 * Translate this node into JVM bytecodes. 51 */ 52 public void translate(ClassGenerator classGen, MethodGenerator methodGen) { 53 ErrorMsg msg = new ErrorMsg(ErrorMsg.NOT_IMPLEMENTED_ERR, 54 getClass(), this); 55 getParser().reportError(FATAL, msg); 56 } 57 58 /** 59 * Translate this node into a fresh instruction list. 60 * The original instruction list is saved and restored. 61 */ 62 public InstructionList compile(ClassGenerator classGen, 63 MethodGenerator methodGen) { 64 final InstructionList result, save = methodGen.getInstructionList(); 65 methodGen.setInstructionList(result = new InstructionList()); 66 translate(classGen, methodGen); 67 methodGen.setInstructionList(save); 68 return result; 69 } 70 71 public void display(int indent) { 72 indent(indent); 73 Util.println("TopLevelElement"); 74 displayContents(indent + IndentIncrement); 75 } 76 77 /** 78 * Add a dependency with other top-level elements like 79 * variables, parameters or keys. 80 */ 81 public void addDependency(TopLevelElement other) { 82 if (_dependencies == null) { 83 _dependencies = new Vector(); 84 } 85 if (!_dependencies.contains(other)) { 86 _dependencies.addElement(other); 87 } 88 } 89 90 /** 91 * Get the list of dependencies with other top-level elements 92 * like variables, parameteres or keys. 93 */ 94 public Vector getDependencies() { 95 return _dependencies; 96 } 97 98} 99