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 }