/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.codemodel.internal;
A Java expression.
Unlike most of CodeModel, JExpressions are built bottom-up (
meaning you start from leaves and then gradually build compliated expressions
by combining them.)
JExpression
defines a series of composer methods, which returns a complicated expression (by often taking other JExpression
s as parameters. For example, you can build "5+2" by JExpr.lit(5).add(JExpr.lit(2))
/**
* A Java expression.
*
* <p>
* Unlike most of CodeModel, JExpressions are built bottom-up (
* meaning you start from leaves and then gradually build compliated expressions
* by combining them.)
*
* <p>
* {@link JExpression} defines a series of composer methods,
* which returns a complicated expression (by often taking other {@link JExpression}s
* as parameters.
* For example, you can build "5+2" by
* {@code JExpr.lit(5).add(JExpr.lit(2))}
*/
public interface JExpression extends JGenerable {
Returns "-[this]" from "[this]".
/**
* Returns "-[this]" from "[this]".
*/
JExpression minus();
Returns "![this]" from "[this]".
/**
* Returns "![this]" from "[this]".
*/
JExpression not();
Returns "~[this]" from "[this]".
/**
* Returns "~[this]" from "[this]".
*/
JExpression complement();
Returns "[this]++" from "[this]".
/**
* Returns "[this]++" from "[this]".
*/
JExpression incr();
Returns "[this]--" from "[this]".
/**
* Returns "[this]--" from "[this]".
*/
JExpression decr();
Returns "[this]+[right]"
/**
* Returns "[this]+[right]"
*/
JExpression plus(JExpression right);
Returns "[this]-[right]"
/**
* Returns "[this]-[right]"
*/
JExpression minus(JExpression right);
Returns "[this]*[right]"
/**
* Returns "[this]*[right]"
*/
JExpression mul(JExpression right);
Returns "[this]/[right]"
/**
* Returns "[this]/[right]"
*/
JExpression div(JExpression right);
Returns "[this]%[right]"
/**
* Returns "[this]%[right]"
*/
JExpression mod(JExpression right);
Returns "[this]<<[right]"
/**
* Returns "[this]<<[right]"
*/
JExpression shl(JExpression right);
Returns "[this]>>[right]
" /**
* Returns "{@code [this]>>[right]}"
*/
JExpression shr(JExpression right);
Returns "[this]>>>[right]
" /**
* Returns "{@code [this]>>>[right]}"
*/
JExpression shrz(JExpression right);
Bit-wise AND '&'. /** Bit-wise AND '&'. */
JExpression band(JExpression right);
Bit-wise OR '|'. /** Bit-wise OR '|'. */
JExpression bor(JExpression right);
Logical AND '&&'. /** Logical AND '&&'. */
JExpression cand(JExpression right);
Logical OR '||'. /** Logical OR '||'. */
JExpression cor(JExpression right);
JExpression xor(JExpression right);
JExpression lt(JExpression right);
JExpression lte(JExpression right);
JExpression gt(JExpression right);
JExpression gte(JExpression right);
JExpression eq(JExpression right);
JExpression ne(JExpression right);
Returns "[this] instanceof [right]"
/**
* Returns "[this] instanceof [right]"
*/
JExpression _instanceof(JType right);
Returns "[this].[method]". Arguments shall be added to the returned JInvocation
object. /**
* Returns "[this].[method]".
*
* Arguments shall be added to the returned {@link JInvocation} object.
*/
JInvocation invoke(JMethod method);
Returns "[this].[method]". Arguments shall be added to the returned JInvocation
object. /**
* Returns "[this].[method]".
*
* Arguments shall be added to the returned {@link JInvocation} object.
*/
JInvocation invoke(String method);
JFieldRef ref(JVar field);
JFieldRef ref(String field);
JArrayCompRef component(JExpression index);
}