001 /* Copyright (c) 2005-2008, Torbjorn Ekman 002 * All rights reserved. 003 * 004 * Redistribution and use in source and binary forms, with or without 005 * modification, are permitted provided that the following conditions are met: 006 * 007 * 1. Redistributions of source code must retain the above copyright notice, 008 * this list of conditions and the following disclaimer. 009 * 010 * 2. Redistributions in binary form must reproduce the above copyright notice, 011 * this list of conditions and the following disclaimer in the documentation 012 * and/or other materials provided with the distribution. 013 * 014 * 3. Neither the name of the copyright holder nor the names of its 015 * contributors may be used to endorse or promote products derived from this 016 * software without specific prior written permission. 017 * 018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 021 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 022 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 * POSSIBILITY OF SUCH DAMAGE. 029 */ 030 031 aspect NodeConstructors { 032 public ParameterDeclaration.ParameterDeclaration(Access type, String name) { 033 this(new Modifiers(new List()), type, name); 034 } 035 public ParameterDeclaration.ParameterDeclaration(TypeDecl type, String name) { 036 this(new Modifiers(new List()), type.createQualifiedAccess(), name); 037 } 038 039 public PackageAccess.PackageAccess(String name, int start, int end) { 040 this(name); 041 this.start = this.Packagestart = start; 042 this.end = this.Packageend = end; 043 } 044 public TypeAccess.TypeAccess(String name, int start, int end) { 045 this(name); 046 this.start = this.IDstart = start; 047 this.end = this.IDend = end; 048 } 049 public VarAccess.VarAccess(String name, int start, int end) { 050 this(name); 051 this.start = this.IDstart = start; 052 this.end = this.IDend = end; 053 } 054 055 public TypeAccess.TypeAccess(String typeName) { 056 this("", typeName); 057 } 058 059 public IntegerLiteral.IntegerLiteral(int i) { 060 this(Integer.toString(i)); 061 } 062 063 public BooleanLiteral.BooleanLiteral(boolean b) { 064 this(b ? "true" : "false"); 065 } 066 067 public MethodAccess.MethodAccess(String name, List args, int start, int end) { 068 this(name, args); 069 setStart(start); 070 setEnd(end); 071 } 072 073 public ReturnStmt.ReturnStmt(Expr expr) { 074 this(new Opt(expr)); 075 } 076 077 public IfStmt.IfStmt(Expr cond, Stmt thenBranch) { 078 this(cond, thenBranch, new Opt()); 079 } 080 081 public IfStmt.IfStmt(Expr cond, Stmt thenBranch, Stmt elseBranch) { 082 this(cond, thenBranch, new Opt(elseBranch)); 083 } 084 085 public VariableDeclaration.VariableDeclaration(Access type, String name, Expr init) { 086 this(new Modifiers(new List()), type, name, new Opt(init)); 087 } 088 089 public VariableDeclaration.VariableDeclaration(Access type, String name) { 090 this(new Modifiers(new List()), type, name, new Opt()); 091 } 092 093 public ClassInstanceExpr.ClassInstanceExpr(Access type, List args) { 094 this(type, args, new Opt()); 095 } 096 097 public FieldDeclaration.FieldDeclaration(Modifiers m, Access type, String name) { 098 this(m, type, name, new Opt()); 099 } 100 101 public FieldDeclaration.FieldDeclaration(Modifiers m, Access type, String name, Expr init) { 102 this(m, type, name, new Opt(init)); 103 } 104 105 public static Stmt AssignExpr.asStmt(Expr left, Expr right) { 106 return new ExprStmt(new AssignSimpleExpr(left, right)); 107 } 108 }