01: /*
02: * Copyright 2001-2004 The Apache Software Foundation.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: /*
17: * $Id: SimpleAttributeValue.java,v 1.6 2004/02/16 22:24:29 minchau Exp $
18: */
19:
20: package org.apache.xalan.xsltc.compiler;
21:
22: import org.apache.bcel.generic.ConstantPoolGen;
23: import org.apache.bcel.generic.InstructionList;
24: import org.apache.bcel.generic.PUSH;
25: import org.apache.xalan.xsltc.compiler.util.ClassGenerator;
26: import org.apache.xalan.xsltc.compiler.util.MethodGenerator;
27: import org.apache.xalan.xsltc.compiler.util.Type;
28: import org.apache.xalan.xsltc.compiler.util.TypeCheckError;
29:
30: /**
31: * @author Jacek Ambroziak
32: * @author Santiago Pericas-Geertsen
33: */
34: final class SimpleAttributeValue extends AttributeValue {
35:
36: private String _value; // The attributes value (literate string).
37:
38: /**
39: * Creates a new simple attribute value.
40: * @param value the attribute value.
41: */
42: public SimpleAttributeValue(String value) {
43: _value = value;
44: }
45:
46: /**
47: * Returns this attribute value's type (String).
48: * @param stable The compiler/parser's symbol table
49: */
50: public Type typeCheck(SymbolTable stable) throws TypeCheckError {
51: return _type = Type.String;
52: }
53:
54: public String toString() {
55: return _value;
56: }
57:
58: protected boolean contextDependent() {
59: return false;
60: }
61:
62: /**
63: * Translate this attribute value into JVM bytecodes that pushes the
64: * attribute value onto the JVM's stack.
65: * @param classGen BCEL Java class generator
66: * @param methodGen BCEL Java method generator
67: */
68: public void translate(ClassGenerator classGen,
69: MethodGenerator methodGen) {
70: final ConstantPoolGen cpg = classGen.getConstantPool();
71: final InstructionList il = methodGen.getInstructionList();
72: il.append(new PUSH(cpg, _value));
73: }
74: }
|