1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/javap/src/main/java/org/apidesign/javap/Constants.java Wed Feb 13 16:52:33 2013 +0100
1.3 @@ -0,0 +1,372 @@
1.4 +/*
1.5 + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
1.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1.7 + *
1.8 + * This code is free software; you can redistribute it and/or modify it
1.9 + * under the terms of the GNU General Public License version 2 only, as
1.10 + * published by the Free Software Foundation. Oracle designates this
1.11 + * particular file as subject to the "Classpath" exception as provided
1.12 + * by Oracle in the LICENSE file that accompanied this code.
1.13 + *
1.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
1.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1.17 + * version 2 for more details (a copy is included in the LICENSE file that
1.18 + * accompanied this code).
1.19 + *
1.20 + * You should have received a copy of the GNU General Public License version
1.21 + * 2 along with this work; if not, write to the Free Software Foundation,
1.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1.23 + *
1.24 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1.25 + * or visit www.oracle.com if you need additional information or have any
1.26 + * questions.
1.27 + */
1.28 +
1.29 +
1.30 +
1.31 +package org.apidesign.javap;
1.32 +
1.33 +/**
1.34 + * This interface defines constant that are used
1.35 + * throughout the compiler. It inherits from RuntimeConstants,
1.36 + * which is an autogenerated class that contains contstants
1.37 + * defined in the interpreter.
1.38 + */
1.39 +
1.40 +public
1.41 +interface Constants extends RuntimeConstants {
1.42 +
1.43 + /**
1.44 + * End of input
1.45 + */
1.46 + public static final int EOF = -1;
1.47 +
1.48 + /*
1.49 + * Flags
1.50 + */
1.51 + public static final int F_VERBOSE = 1 << 0;
1.52 + public static final int F_DUMP = 1 << 1;
1.53 + public static final int F_WARNINGS = 1 << 2;
1.54 + public static final int F_DEBUG = 1 << 3;
1.55 + public static final int F_OPTIMIZE = 1 << 4;
1.56 + public static final int F_DEPENDENCIES = 1 << 5;
1.57 +
1.58 + /*
1.59 + * Type codes
1.60 + */
1.61 + public static final int TC_BOOLEAN = 0;
1.62 + public static final int TC_BYTE = 1;
1.63 + public static final int TC_CHAR = 2;
1.64 + public static final int TC_SHORT = 3;
1.65 + public static final int TC_INT = 4;
1.66 + public static final int TC_LONG = 5;
1.67 + public static final int TC_FLOAT = 6;
1.68 + public static final int TC_DOUBLE = 7;
1.69 + public static final int TC_NULL = 8;
1.70 + public static final int TC_ARRAY = 9;
1.71 + public static final int TC_CLASS = 10;
1.72 + public static final int TC_VOID = 11;
1.73 + public static final int TC_METHOD = 12;
1.74 + public static final int TC_ERROR = 13;
1.75 +
1.76 + /*
1.77 + * Type Masks
1.78 + */
1.79 + public static final int TM_NULL = 1 << TC_NULL;
1.80 + public static final int TM_VOID = 1 << TC_VOID;
1.81 + public static final int TM_BOOLEAN = 1 << TC_BOOLEAN;
1.82 + public static final int TM_BYTE = 1 << TC_BYTE;
1.83 + public static final int TM_CHAR = 1 << TC_CHAR;
1.84 + public static final int TM_SHORT = 1 << TC_SHORT;
1.85 + public static final int TM_INT = 1 << TC_INT;
1.86 + public static final int TM_LONG = 1 << TC_LONG;
1.87 + public static final int TM_FLOAT = 1 << TC_FLOAT;
1.88 + public static final int TM_DOUBLE = 1 << TC_DOUBLE;
1.89 + public static final int TM_ARRAY = 1 << TC_ARRAY;
1.90 + public static final int TM_CLASS = 1 << TC_CLASS;
1.91 + public static final int TM_METHOD = 1 << TC_METHOD;
1.92 + public static final int TM_ERROR = 1 << TC_ERROR;
1.93 +
1.94 + public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
1.95 + public static final int TM_NUM32 = TM_INT32 | TM_FLOAT;
1.96 + public static final int TM_NUM64 = TM_LONG | TM_DOUBLE;
1.97 + public static final int TM_INTEGER = TM_INT32 | TM_LONG;
1.98 + public static final int TM_REAL = TM_FLOAT | TM_DOUBLE;
1.99 + public static final int TM_NUMBER = TM_INTEGER | TM_REAL;
1.100 + public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;
1.101 +
1.102 + /*
1.103 + * Class status
1.104 + */
1.105 + public static final int CS_UNDEFINED = 0;
1.106 + public static final int CS_UNDECIDED = 1;
1.107 + public static final int CS_BINARY = 2;
1.108 + public static final int CS_SOURCE = 3;
1.109 + public static final int CS_PARSED = 4;
1.110 + public static final int CS_COMPILED = 5;
1.111 + public static final int CS_NOTFOUND = 6;
1.112 +
1.113 + /*
1.114 + * Attributes
1.115 + */
1.116 + public static final int ATT_ALL = -1;
1.117 + public static final int ATT_CODE = 1;
1.118 +
1.119 + /*
1.120 + * Number of bits used in file offsets
1.121 + */
1.122 + public static final int OFFSETBITS = 19;
1.123 + public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1;
1.124 + public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1;
1.125 +
1.126 + /*
1.127 + * Operators
1.128 + */
1.129 + public final int COMMA = 0;
1.130 + public final int ASSIGN = 1;
1.131 +
1.132 + public final int ASGMUL = 2;
1.133 + public final int ASGDIV = 3;
1.134 + public final int ASGREM = 4;
1.135 + public final int ASGADD = 5;
1.136 + public final int ASGSUB = 6;
1.137 + public final int ASGLSHIFT = 7;
1.138 + public final int ASGRSHIFT = 8;
1.139 + public final int ASGURSHIFT = 9;
1.140 + public final int ASGBITAND = 10;
1.141 + public final int ASGBITOR = 11;
1.142 + public final int ASGBITXOR = 12;
1.143 +
1.144 + public final int COND = 13;
1.145 + public final int OR = 14;
1.146 + public final int AND = 15;
1.147 + public final int BITOR = 16;
1.148 + public final int BITXOR = 17;
1.149 + public final int BITAND = 18;
1.150 + public final int NE = 19;
1.151 + public final int EQ = 20;
1.152 + public final int GE = 21;
1.153 + public final int GT = 22;
1.154 + public final int LE = 23;
1.155 + public final int LT = 24;
1.156 + public final int INSTANCEOF = 25;
1.157 + public final int LSHIFT = 26;
1.158 + public final int RSHIFT = 27;
1.159 + public final int URSHIFT = 28;
1.160 + public final int ADD = 29;
1.161 + public final int SUB = 30;
1.162 + public final int DIV = 31;
1.163 + public final int REM = 32;
1.164 + public final int MUL = 33;
1.165 + public final int CAST = 34; // (x)y
1.166 + public final int POS = 35; // +x
1.167 + public final int NEG = 36; // -x
1.168 + public final int NOT = 37;
1.169 + public final int BITNOT = 38;
1.170 + public final int PREINC = 39; // ++x
1.171 + public final int PREDEC = 40; // --x
1.172 + public final int NEWARRAY = 41;
1.173 + public final int NEWINSTANCE = 42;
1.174 + public final int NEWFROMNAME = 43;
1.175 + public final int POSTINC = 44; // x++
1.176 + public final int POSTDEC = 45; // x--
1.177 + public final int FIELD = 46;
1.178 + public final int METHOD = 47; // x(y)
1.179 + public final int ARRAYACCESS = 48; // x[y]
1.180 + public final int NEW = 49;
1.181 + public final int INC = 50;
1.182 + public final int DEC = 51;
1.183 +
1.184 + public final int CONVERT = 55; // implicit conversion
1.185 + public final int EXPR = 56; // (x)
1.186 + public final int ARRAY = 57; // {x, y, ...}
1.187 + public final int GOTO = 58;
1.188 +
1.189 + /*
1.190 + * Value tokens
1.191 + */
1.192 + public final int IDENT = 60;
1.193 + public final int BOOLEANVAL = 61;
1.194 + public final int BYTEVAL = 62;
1.195 + public final int CHARVAL = 63;
1.196 + public final int SHORTVAL = 64;
1.197 + public final int INTVAL = 65;
1.198 + public final int LONGVAL = 66;
1.199 + public final int FLOATVAL = 67;
1.200 + public final int DOUBLEVAL = 68;
1.201 + public final int STRINGVAL = 69;
1.202 +
1.203 + /*
1.204 + * Type keywords
1.205 + */
1.206 + public final int BYTE = 70;
1.207 + public final int CHAR = 71;
1.208 + public final int SHORT = 72;
1.209 + public final int INT = 73;
1.210 + public final int LONG = 74;
1.211 + public final int FLOAT = 75;
1.212 + public final int DOUBLE = 76;
1.213 + public final int VOID = 77;
1.214 + public final int BOOLEAN = 78;
1.215 +
1.216 + /*
1.217 + * Expression keywords
1.218 + */
1.219 + public final int TRUE = 80;
1.220 + public final int FALSE = 81;
1.221 + public final int THIS = 82;
1.222 + public final int SUPER = 83;
1.223 + public final int NULL = 84;
1.224 +
1.225 + /*
1.226 + * Statement keywords
1.227 + */
1.228 + public final int IF = 90;
1.229 + public final int ELSE = 91;
1.230 + public final int FOR = 92;
1.231 + public final int WHILE = 93;
1.232 + public final int DO = 94;
1.233 + public final int SWITCH = 95;
1.234 + public final int CASE = 96;
1.235 + public final int DEFAULT = 97;
1.236 + public final int BREAK = 98;
1.237 + public final int CONTINUE = 99;
1.238 + public final int RETURN = 100;
1.239 + public final int TRY = 101;
1.240 + public final int CATCH = 102;
1.241 + public final int FINALLY = 103;
1.242 + public final int THROW = 104;
1.243 + public final int STAT = 105;
1.244 + public final int EXPRESSION = 106;
1.245 + public final int DECLARATION = 107;
1.246 + public final int VARDECLARATION = 108;
1.247 +
1.248 + /*
1.249 + * Declaration keywords
1.250 + */
1.251 + public final int IMPORT = 110;
1.252 + public final int CLASS = 111;
1.253 + public final int EXTENDS = 112;
1.254 + public final int IMPLEMENTS = 113;
1.255 + public final int INTERFACE = 114;
1.256 + public final int PACKAGE = 115;
1.257 +
1.258 + /*
1.259 + * Modifier keywords
1.260 + */
1.261 + public final int PRIVATE = 120;
1.262 + public final int PUBLIC = 121;
1.263 + public final int PROTECTED = 122;
1.264 + public final int CONST = 123;
1.265 + public final int STATIC = 124;
1.266 + public final int TRANSIENT = 125;
1.267 + public final int SYNCHRONIZED = 126;
1.268 + public final int NATIVE = 127;
1.269 + public final int FINAL = 128;
1.270 + public final int VOLATILE = 129;
1.271 + public final int ABSTRACT = 130;
1.272 + public final int STRICT = 165;
1.273 +
1.274 + /*
1.275 + * Punctuation
1.276 + */
1.277 + public final int SEMICOLON = 135;
1.278 + public final int COLON = 136;
1.279 + public final int QUESTIONMARK = 137;
1.280 + public final int LBRACE = 138;
1.281 + public final int RBRACE = 139;
1.282 + public final int LPAREN = 140;
1.283 + public final int RPAREN = 141;
1.284 + public final int LSQBRACKET = 142;
1.285 + public final int RSQBRACKET = 143;
1.286 + public final int THROWS = 144;
1.287 +
1.288 + /*
1.289 + * Special tokens
1.290 + */
1.291 + public final int ERROR = 145; // an error
1.292 + public final int COMMENT = 146; // not used anymore.
1.293 + public final int TYPE = 147;
1.294 + public final int LENGTH = 148;
1.295 + public final int INLINERETURN = 149;
1.296 + public final int INLINEMETHOD = 150;
1.297 + public final int INLINENEWINSTANCE = 151;
1.298 +
1.299 + /*
1.300 + * Added for jasm
1.301 + */
1.302 + public final int METHODREF = 152;
1.303 + public final int FIELDREF = 153;
1.304 + public final int STACK = 154;
1.305 + public final int LOCAL = 155;
1.306 + public final int CPINDEX = 156;
1.307 + public final int CPNAME = 157;
1.308 + public final int SIGN = 158;
1.309 + public final int BITS = 159;
1.310 + public final int INF = 160;
1.311 + public final int NAN = 161;
1.312 + public final int INNERCLASS = 162;
1.313 + public final int OF = 163;
1.314 + public final int SYNTHETIC = 164;
1.315 +// last used=165;
1.316 +
1.317 + /*
1.318 + * Operator precedence
1.319 + */
1.320 + public static final int opPrecedence[] = {
1.321 + 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1.322 + 11, 11, 11, 12, 13, 14, 15, 16, 17, 18,
1.323 + 18, 19, 19, 19, 19, 19, 20, 20, 20, 21,
1.324 + 21, 22, 22, 22, 23, 24, 24, 24, 24, 24,
1.325 + 24, 25, 25, 26, 26, 26, 26, 26, 26
1.326 + };
1.327 +
1.328 + /*
1.329 + * Operator names
1.330 + */
1.331 + public static final String opNames[] = {
1.332 + ",", "=", "*=", "/=", "%=",
1.333 + "+=", "-=", "<<=", ">>=", "<<<=",
1.334 + "&=", "|=", "^=", "?:", "||",
1.335 + "&&", "|", "^", "&", "!=",
1.336 + "==", ">=", ">", "<=", "<",
1.337 + "instanceof", "<<", ">>", "<<<", "+",
1.338 + "-", "/", "%", "*", "cast",
1.339 + "+", "-", "!", "~", "++",
1.340 + "--", "new", "new", "new", "++",
1.341 + "--", "field", "method", "[]", "new",
1.342 + "++", "--", null, null, null,
1.343 +
1.344 + "convert", "expr", "array", "goto", null,
1.345 +
1.346 + "Identifier", "Boolean", "Byte", "Char", "Short",
1.347 + "Integer", "Long", "Float", "Double", "String",
1.348 +
1.349 + "byte", "char", "short", "int", "long",
1.350 + "float", "double", "void", "boolean", null,
1.351 +
1.352 + "true", "false", "this", "super", "null",
1.353 + null, null, null, null, null,
1.354 +
1.355 + "if", "else", "for", "while", "do",
1.356 + "switch", "case", "default", "break", "continue",
1.357 + "return", "try", "catch", "finally", "throw",
1.358 + "stat", "expression", "declaration", "declaration", null,
1.359 +
1.360 + "import", "class", "extends", "implements", "interface",
1.361 + "package", null, null, null, null,
1.362 +
1.363 + "private", "public", "protected", "const", "static",
1.364 + "transient", "synchronized", "native", "final", "volatile",
1.365 + "abstract", null, null, null, null,
1.366 +
1.367 + ";", ":", "?", "{", "}",
1.368 + "(", ")", "[", "]", "throws",
1.369 + "error", "comment", "type", "length", "inline-return",
1.370 + "inline-method", "inline-new",
1.371 + "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN",
1.372 + "bits", "INF", "NaN", "InnerClass", "of", "synthetic"
1.373 + };
1.374 +
1.375 +}