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    }