1 package net.sourceforge.jenesis4java; 2 3 /* 4 * #%L 5 * Jenesis 4 Java Code Generator 6 * %% 7 * Copyright (C) 2000 - 2015 jenesis4java 8 * %% 9 * This program is free software: you can redistribute it and/or modify 10 * it under the terms of the GNU Lesser General Public License as 11 * published by the Free Software Foundation, either version 3 of the 12 * License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Lesser Public License for more details. 18 * 19 * You should have received a copy of the GNU General Lesser Public 20 * License along with this program. If not, see 21 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 22 * #L% 23 */ 24 25 /** 26 * Copyright (C) 2008, 2010 Richard van Nieuwenhoven - ritchie [at] gmx [dot] at 27 * Copyright (C) 2000, 2001 Paul Cody Johnston - pcj@inxar.org <br> 28 * This file is part of Jenesis4java. Jenesis4java is free software: you can 29 * redistribute it and/or modify it under the terms of the GNU Lesser General 30 * Public License as published by the Free Software Foundation, either version 3 31 * of the License, or (at your option) any later version.<br> 32 * Jenesis4java is distributed in the hope that it will be useful, but WITHOUT 33 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 34 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 35 * details.<br> 36 * You should have received a copy of the GNU Lesser General Public License 37 * along with Jenesis4java. If not, see <http://www.gnu.org/licenses/>. 38 */ 39 /** 40 * {@code Expression} subinterface for expressions which have a single operand. 41 */ 42 public interface Unary extends Expression { 43 44 /** 45 * Unary function type for a group of parentheses: {@code (expr)}. 46 */ 47 int GROUP = 0; 48 49 /** 50 * Unary function type for a logical complement: {@code (!true)}. 51 */ 52 int NOT = 1; 53 54 /** 55 * Unary function type for bitwise complement: {@code (~1)}. 56 */ 57 int BITWISE_NOT = 2; 58 59 /** 60 * Unary function type for arithmetic sign complement: {@code (-1)}. 61 */ 62 int NEG = 3; 63 64 /** 65 * Unary function type for arithmetic sign identity: {@code (+1)}. 66 */ 67 int POS = 4; 68 69 /** 70 * Unary function type for arithmetic ante-increment: {@code (++i)}. 71 */ 72 int PREFIX_INCREMENT = 5; 73 74 /** 75 * Unary function type for arithmetic ante-increment: {@code (++i)}. 76 * 77 * @deprecated use {@link #PREFIX_INCREMENT} instead. 78 */ 79 @Deprecated 80 int AI = PREFIX_INCREMENT; 81 82 /** 83 * Unary function type for arithmetic post-increment: {@code (i++)}. 84 */ 85 int POST_INCREMENT = 6; 86 87 /** 88 * Unary function type for arithmetic post-increment: {@code (i++)}. 89 * 90 * @deprecated use {@link #POST_INCREMENT} instead. 91 */ 92 @Deprecated 93 int PI = POST_INCREMENT; 94 95 /** 96 * Unary function type for arithmetic ante-decrement: {@code (--i)}. 97 */ 98 int PREFIX_DECREMENT = 7; 99 100 /** 101 * Unary function type for arithmetic ante-decrement: {@code (--i)}. 102 * 103 * @deprecated use {@link #PREFIX_DECREMENT} instead. 104 */ 105 @Deprecated 106 int AD = PREFIX_DECREMENT; 107 108 /** 109 * Unary function type for arithmetic post-decrement: {@code (i--)}. 110 */ 111 int POST_DECREMENT = 8; 112 113 /** 114 * Unary function type for arithmetic post-decrement: {@code (i--)}. 115 * 116 * @deprecated use {@link #POST_DECREMENT} instead. 117 */ 118 @Deprecated 119 int PD = POST_DECREMENT; 120 121 /** 122 * Getter method for the operand. 123 */ 124 Expression getValue(); 125 126 /** 127 * Setter method for the operand. 128 */ 129 Unary setValue(Expression e); 130 131 /** 132 * Returns the type of this unary function as one of the constants in this 133 * interface. 134 */ 135 int type(); 136 }