001: // This file is part of KeY - Integrated Deductive Software Design
002: // Copyright (C) 2001-2007 Universitaet Karlsruhe, Germany
003: // Universitaet Koblenz-Landau, Germany
004: // Chalmers University of Technology, Sweden
005: //
006: // The KeY system is protected by the GNU General Public License.
007: // See LICENSE.TXT for details.
008: //
009: //
010:
011: package de.uka.ilkd.key.java.recoderext;
012:
013: import recoder.java.ProgramElement;
014: import recoder.java.SourceVisitor;
015: import recoder.java.Statement;
016: import recoder.java.statement.JavaStatement;
017: import de.uka.ilkd.key.logic.op.SchemaVariable;
018:
019: public class StatementSVWrapper extends JavaStatement implements
020: KeYRecoderExtension, SVWrapper {
021:
022: protected SchemaVariable sv;
023:
024: protected StatementSVWrapper(StatementSVWrapper proto) {
025: super (proto);
026: }
027:
028: public StatementSVWrapper() {
029: }
030:
031: public StatementSVWrapper(SchemaVariable sv) {
032: this .sv = sv;
033: }
034:
035: /**
036: Make parent role valid.
037: */
038: public void makeParentRoleValid() {
039: super .makeParentRoleValid();
040: }
041:
042: /**
043: Returns the number of children of this node.
044: @return an int giving the number of children of this node
045: */
046: public int getChildCount() {
047: int result = 0;
048: return result;
049: }
050:
051: /**
052: Returns the child at the specified index in this node's "virtual"
053: child array
054: @param index an index into this node's "virtual" child array
055: @return the program element at the given position
056: @exception ArrayIndexOutOfBoundsException if <tt>index</tt> is out
057: of bounds
058: */
059: public ProgramElement getChildAt(int index) {
060: throw new ArrayIndexOutOfBoundsException();
061: }
062:
063: public int getChildPositionCode(ProgramElement child0) {
064: return -1;
065: }
066:
067: /**
068: * Replace a single child in the current node.
069: * The child to replace is matched by identity and hence must be known
070: * exactly. The replacement element can be null - in that case, the child
071: * is effectively removed.
072: * The parent role of the new child is validated, while the
073: * parent link of the replaced child is left untouched.
074: * @param p the old child.
075: * @param q the new child.
076: * @return true if a replacement has occured, false otherwise.
077: * @exception ClassCastException if the new child cannot take over
078: * the role of the old one.
079: */
080:
081: public boolean replaceChild(ProgramElement p, ProgramElement q) {
082: return false;
083: }
084:
085: /**
086: * sets the schema variable of sort statement
087: * @param sv the SchemaVariable
088: */
089: public void setSV(SchemaVariable sv) {
090: this .sv = sv;
091: }
092:
093: /**
094: * returns a String name of this meta construct.
095: */
096: public SchemaVariable getSV() {
097: return sv;
098: }
099:
100: /**
101: Get the number of statements in this container.
102: @return the number of statements.
103: */
104:
105: public int getStatementCount() {
106: return 0;
107: }
108:
109: /*
110: Return the statement at the specified index in this node's
111: "virtual" statement array.
112: @param index an index for a statement.
113: @return the statement with the given index.
114: @exception ArrayIndexOutOfBoundsException if <tt>index</tt> is out
115: of bounds.
116: */
117: public Statement getStatementAt(int index) {
118: throw new ArrayIndexOutOfBoundsException();
119: }
120:
121: //don't think we need it
122: public void accept(SourceVisitor v) {
123: }
124:
125: public Object deepClone() {
126: return new StatementSVWrapper(sv);
127: }
128:
129: }
|