KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > aspectj > compiler > base > ast > CodeBody


1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * This file is part of the compiler and core tools for the AspectJ(tm)
4  * programming language; see http://aspectj.org
5  *
6  * The contents of this file are subject to the Mozilla Public License
7  * Version 1.1 (the "License"); you may not use this file except in
8  * compliance with the License. You may obtain a copy of the License at
9  * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is AspectJ.
17  *
18  * The Initial Developer of the Original Code is Xerox Corporation. Portions
19  * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
20  * All Rights Reserved.
21  *
22  * Contributor(s):
23  */

24
25 package org.aspectj.compiler.base.ast;
26
27 import org.aspectj.compiler.base.*;
28 import org.aspectj.compiler.base.JavaCompiler;
29 import org.aspectj.compiler.base.CodeWriter;
30 import java.io.IOException JavaDoc;
31
32 /**
33   * @grammar { stmts* }
34   * @property boolean parsed
35   */

36
37 public class CodeBody extends BlockStmt {
38
39     public CodeDec getEnclosingCodeDec() {
40         if (getParent() instanceof CodeDec) return (CodeDec)getParent();
41         return super.getEnclosingCodeDec();
42     }
43     public Dec getEnclosingDec() {
44         if (getParent() instanceof CodeDec) return (Dec)getParent();
45         return super.getEnclosingDec();
46     }
47
48     public void cleanup() {
49         //setParsed(false);
50
super.cleanup();
51     }
52
53     //INTRO from ScopePass
54
public void walkScope(ScopeWalker walker) {
55         if (walker.walkBodies()) super.walkScope(walker);
56     }
57
58
59     // ------------------------------
60
// Intro: ByteCodeCleanupPass
61

62     // We're overriding this because CodeDecs must have codeBodies
63
// inside, so we should not replace empty CodeBodies with emptyStmts.
64
public ASTObject postCleanup(ByteCodeCleanupPass walker) {
65         makeTempsExplicit();
66         return this;
67     }
68
69     // ------------------------------
70
// utility constructors
71

72     public CodeBody(SourceLocation location, Stmts _stmts, boolean _parsed) {
73         this(location, null, _stmts, _parsed);
74     }
75
76     //BEGIN: Generated from @child and @property
77
protected boolean parsed;
78     public boolean getParsed() { return parsed; }
79     public void setParsed(boolean _parsed) { parsed = _parsed; }
80
81     public CodeBody(SourceLocation location, Stmts _tmpStmts, Stmts _stmts, boolean _parsed) {
82         super(location, _tmpStmts, _stmts);
83         setParsed(_parsed);
84     }
85     protected CodeBody(SourceLocation source) {
86         super(source);
87     }
88
89     public ASTObject copyWalk(CopyWalker walker) {
90         CodeBody ret = new CodeBody(getSourceLocation());
91         ret.preCopy(walker, this);
92         if (tmpStmts != null) ret.setTmpStmts( (Stmts)walker.process(tmpStmts) );
93         if (stmts != null) ret.setStmts( (Stmts)walker.process(stmts) );
94         ret.parsed = parsed;
95         return ret;
96     }
97
98
99     public String JavaDoc getDefaultDisplayName() {
100         return "CodeBody(parsed: "+parsed+")";
101     }
102
103     //END: Generated from @child and @property
104
}
105
Popular Tags