javap/src/main/java/org/apidesign/javap/Constants.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 07 Feb 2013 12:58:12 +0100
branchemul
changeset 694 0d277415ed02
parent 144 b06660b614db
permissions -rw-r--r--
Rebasing the Inflater support on jzlib which, unlike GNU ClassPath, has correct implementation of Huffman code. Making the implementation more easily testable by turning Inflater and ZipInputStream into pure delegates. Current implementation is going to need proper long support.
jtulach@144
     1
/*
jtulach@144
     2
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
jtulach@144
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jtulach@144
     4
 *
jtulach@144
     5
 * This code is free software; you can redistribute it and/or modify it
jtulach@144
     6
 * under the terms of the GNU General Public License version 2 only, as
jtulach@144
     7
 * published by the Free Software Foundation.  Oracle designates this
jtulach@144
     8
 * particular file as subject to the "Classpath" exception as provided
jtulach@144
     9
 * by Oracle in the LICENSE file that accompanied this code.
jtulach@144
    10
 *
jtulach@144
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
jtulach@144
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jtulach@144
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
jtulach@144
    14
 * version 2 for more details (a copy is included in the LICENSE file that
jtulach@144
    15
 * accompanied this code).
jtulach@144
    16
 *
jtulach@144
    17
 * You should have received a copy of the GNU General Public License version
jtulach@144
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
jtulach@144
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jtulach@144
    20
 *
jtulach@144
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jtulach@144
    22
 * or visit www.oracle.com if you need additional information or have any
jtulach@144
    23
 * questions.
jtulach@144
    24
 */
jtulach@144
    25
jtulach@144
    26
jtulach@144
    27
jtulach@167
    28
package org.apidesign.javap;
jtulach@144
    29
jtulach@144
    30
/**
jtulach@144
    31
 * This interface defines constant that are used
jtulach@144
    32
 * throughout the compiler. It inherits from RuntimeConstants,
jtulach@144
    33
 * which is an autogenerated class that contains contstants
jtulach@144
    34
 * defined in the interpreter.
jtulach@144
    35
 */
jtulach@144
    36
jtulach@144
    37
public
jtulach@144
    38
interface Constants extends RuntimeConstants {
jtulach@144
    39
jtulach@144
    40
     /**
jtulach@144
    41
     * End of input
jtulach@144
    42
     */
jtulach@144
    43
    public static final int EOF = -1;
jtulach@144
    44
jtulach@144
    45
   /*
jtulach@144
    46
     * Flags
jtulach@144
    47
     */
jtulach@144
    48
    public static final int F_VERBOSE           = 1 << 0;
jtulach@144
    49
    public static final int F_DUMP              = 1 << 1;
jtulach@144
    50
    public static final int F_WARNINGS          = 1 << 2;
jtulach@144
    51
    public static final int F_DEBUG             = 1 << 3;
jtulach@144
    52
    public static final int F_OPTIMIZE          = 1 << 4;
jtulach@144
    53
    public static final int F_DEPENDENCIES      = 1 << 5;
jtulach@144
    54
jtulach@144
    55
    /*
jtulach@144
    56
     * Type codes
jtulach@144
    57
     */
jtulach@144
    58
    public static final int TC_BOOLEAN   = 0;
jtulach@144
    59
    public static final int TC_BYTE      = 1;
jtulach@144
    60
    public static final int TC_CHAR      = 2;
jtulach@144
    61
    public static final int TC_SHORT     = 3;
jtulach@144
    62
    public static final int TC_INT       = 4;
jtulach@144
    63
    public static final int TC_LONG      = 5;
jtulach@144
    64
    public static final int TC_FLOAT     = 6;
jtulach@144
    65
    public static final int TC_DOUBLE    = 7;
jtulach@144
    66
    public static final int TC_NULL      = 8;
jtulach@144
    67
    public static final int TC_ARRAY     = 9;
jtulach@144
    68
    public static final int TC_CLASS     = 10;
jtulach@144
    69
    public static final int TC_VOID      = 11;
jtulach@144
    70
    public static final int TC_METHOD    = 12;
jtulach@144
    71
    public static final int TC_ERROR     = 13;
jtulach@144
    72
jtulach@144
    73
    /*
jtulach@144
    74
     * Type Masks
jtulach@144
    75
     */
jtulach@144
    76
    public static final int TM_NULL      = 1 << TC_NULL;
jtulach@144
    77
    public static final int TM_VOID      = 1 << TC_VOID;
jtulach@144
    78
    public static final int TM_BOOLEAN   = 1 << TC_BOOLEAN;
jtulach@144
    79
    public static final int TM_BYTE      = 1 << TC_BYTE;
jtulach@144
    80
    public static final int TM_CHAR      = 1 << TC_CHAR;
jtulach@144
    81
    public static final int TM_SHORT     = 1 << TC_SHORT;
jtulach@144
    82
    public static final int TM_INT       = 1 << TC_INT;
jtulach@144
    83
    public static final int TM_LONG      = 1 << TC_LONG;
jtulach@144
    84
    public static final int TM_FLOAT     = 1 << TC_FLOAT;
jtulach@144
    85
    public static final int TM_DOUBLE    = 1 << TC_DOUBLE;
jtulach@144
    86
    public static final int TM_ARRAY     = 1 << TC_ARRAY;
jtulach@144
    87
    public static final int TM_CLASS     = 1 << TC_CLASS;
jtulach@144
    88
    public static final int TM_METHOD    = 1 << TC_METHOD;
jtulach@144
    89
    public static final int TM_ERROR     = 1 << TC_ERROR;
jtulach@144
    90
jtulach@144
    91
    public static final int TM_INT32     = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
jtulach@144
    92
    public static final int TM_NUM32     = TM_INT32 | TM_FLOAT;
jtulach@144
    93
    public static final int TM_NUM64     = TM_LONG | TM_DOUBLE;
jtulach@144
    94
    public static final int TM_INTEGER   = TM_INT32 | TM_LONG;
jtulach@144
    95
    public static final int TM_REAL      = TM_FLOAT | TM_DOUBLE;
jtulach@144
    96
    public static final int TM_NUMBER    = TM_INTEGER | TM_REAL;
jtulach@144
    97
    public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;
jtulach@144
    98
jtulach@144
    99
    /*
jtulach@144
   100
     * Class status
jtulach@144
   101
     */
jtulach@144
   102
    public static final int CS_UNDEFINED        = 0;
jtulach@144
   103
    public static final int CS_UNDECIDED        = 1;
jtulach@144
   104
    public static final int CS_BINARY           = 2;
jtulach@144
   105
    public static final int CS_SOURCE           = 3;
jtulach@144
   106
    public static final int CS_PARSED           = 4;
jtulach@144
   107
    public static final int CS_COMPILED         = 5;
jtulach@144
   108
    public static final int CS_NOTFOUND         = 6;
jtulach@144
   109
jtulach@144
   110
    /*
jtulach@144
   111
     * Attributes
jtulach@144
   112
     */
jtulach@144
   113
    public static final int ATT_ALL             = -1;
jtulach@144
   114
    public static final int ATT_CODE            = 1;
jtulach@144
   115
jtulach@144
   116
    /*
jtulach@144
   117
     * Number of bits used in file offsets
jtulach@144
   118
     */
jtulach@144
   119
    public static final int OFFSETBITS          = 19;
jtulach@144
   120
    public static final int MAXFILESIZE         = (1 << OFFSETBITS) - 1;
jtulach@144
   121
    public static final int MAXLINENUMBER       = (1 << (32 - OFFSETBITS)) - 1;
jtulach@144
   122
jtulach@144
   123
    /*
jtulach@144
   124
     * Operators
jtulach@144
   125
     */
jtulach@144
   126
    public final int COMMA              = 0;
jtulach@144
   127
    public final int ASSIGN             = 1;
jtulach@144
   128
jtulach@144
   129
    public final int ASGMUL             = 2;
jtulach@144
   130
    public final int ASGDIV             = 3;
jtulach@144
   131
    public final int ASGREM             = 4;
jtulach@144
   132
    public final int ASGADD             = 5;
jtulach@144
   133
    public final int ASGSUB             = 6;
jtulach@144
   134
    public final int ASGLSHIFT          = 7;
jtulach@144
   135
    public final int ASGRSHIFT          = 8;
jtulach@144
   136
    public final int ASGURSHIFT         = 9;
jtulach@144
   137
    public final int ASGBITAND          = 10;
jtulach@144
   138
    public final int ASGBITOR           = 11;
jtulach@144
   139
    public final int ASGBITXOR          = 12;
jtulach@144
   140
jtulach@144
   141
    public final int COND               = 13;
jtulach@144
   142
    public final int OR                 = 14;
jtulach@144
   143
    public final int AND                = 15;
jtulach@144
   144
    public final int BITOR              = 16;
jtulach@144
   145
    public final int BITXOR             = 17;
jtulach@144
   146
    public final int BITAND             = 18;
jtulach@144
   147
    public final int NE                 = 19;
jtulach@144
   148
    public final int EQ                 = 20;
jtulach@144
   149
    public final int GE                 = 21;
jtulach@144
   150
    public final int GT                 = 22;
jtulach@144
   151
    public final int LE                 = 23;
jtulach@144
   152
    public final int LT                 = 24;
jtulach@144
   153
    public final int INSTANCEOF         = 25;
jtulach@144
   154
    public final int LSHIFT             = 26;
jtulach@144
   155
    public final int RSHIFT             = 27;
jtulach@144
   156
    public final int URSHIFT            = 28;
jtulach@144
   157
    public final int ADD                = 29;
jtulach@144
   158
    public final int SUB                = 30;
jtulach@144
   159
    public final int DIV                = 31;
jtulach@144
   160
    public final int REM                = 32;
jtulach@144
   161
    public final int MUL                = 33;
jtulach@144
   162
    public final int CAST               = 34;           // (x)y
jtulach@144
   163
    public final int POS                = 35;           // +x
jtulach@144
   164
    public final int NEG                = 36;           // -x
jtulach@144
   165
    public final int NOT                = 37;
jtulach@144
   166
    public final int BITNOT             = 38;
jtulach@144
   167
    public final int PREINC             = 39;           // ++x
jtulach@144
   168
    public final int PREDEC             = 40;           // --x
jtulach@144
   169
    public final int NEWARRAY           = 41;
jtulach@144
   170
    public final int NEWINSTANCE        = 42;
jtulach@144
   171
    public final int NEWFROMNAME        = 43;
jtulach@144
   172
    public final int POSTINC            = 44;           // x++
jtulach@144
   173
    public final int POSTDEC            = 45;           // x--
jtulach@144
   174
    public final int FIELD              = 46;
jtulach@144
   175
    public final int METHOD             = 47;           // x(y)
jtulach@144
   176
    public final int ARRAYACCESS        = 48;           // x[y]
jtulach@144
   177
    public final int NEW                = 49;
jtulach@144
   178
    public final int INC                = 50;
jtulach@144
   179
    public final int DEC                = 51;
jtulach@144
   180
jtulach@144
   181
    public final int CONVERT            = 55;           // implicit conversion
jtulach@144
   182
    public final int EXPR               = 56;           // (x)
jtulach@144
   183
    public final int ARRAY              = 57;           // {x, y, ...}
jtulach@144
   184
    public final int GOTO               = 58;
jtulach@144
   185
jtulach@144
   186
    /*
jtulach@144
   187
     * Value tokens
jtulach@144
   188
     */
jtulach@144
   189
    public final int IDENT              = 60;
jtulach@144
   190
    public final int BOOLEANVAL         = 61;
jtulach@144
   191
    public final int BYTEVAL            = 62;
jtulach@144
   192
    public final int CHARVAL            = 63;
jtulach@144
   193
    public final int SHORTVAL           = 64;
jtulach@144
   194
    public final int INTVAL                     = 65;
jtulach@144
   195
    public final int LONGVAL            = 66;
jtulach@144
   196
    public final int FLOATVAL           = 67;
jtulach@144
   197
    public final int DOUBLEVAL          = 68;
jtulach@144
   198
    public final int STRINGVAL          = 69;
jtulach@144
   199
jtulach@144
   200
    /*
jtulach@144
   201
     * Type keywords
jtulach@144
   202
     */
jtulach@144
   203
    public final int BYTE               = 70;
jtulach@144
   204
    public final int CHAR               = 71;
jtulach@144
   205
    public final int SHORT              = 72;
jtulach@144
   206
    public final int INT                = 73;
jtulach@144
   207
    public final int LONG               = 74;
jtulach@144
   208
    public final int FLOAT              = 75;
jtulach@144
   209
    public final int DOUBLE             = 76;
jtulach@144
   210
    public final int VOID               = 77;
jtulach@144
   211
    public final int BOOLEAN            = 78;
jtulach@144
   212
jtulach@144
   213
    /*
jtulach@144
   214
     * Expression keywords
jtulach@144
   215
     */
jtulach@144
   216
    public final int TRUE               = 80;
jtulach@144
   217
    public final int FALSE              = 81;
jtulach@144
   218
    public final int THIS               = 82;
jtulach@144
   219
    public final int SUPER              = 83;
jtulach@144
   220
    public final int NULL               = 84;
jtulach@144
   221
jtulach@144
   222
    /*
jtulach@144
   223
     * Statement keywords
jtulach@144
   224
     */
jtulach@144
   225
    public final int IF                 = 90;
jtulach@144
   226
    public final int ELSE               = 91;
jtulach@144
   227
    public final int FOR                = 92;
jtulach@144
   228
    public final int WHILE              = 93;
jtulach@144
   229
    public final int DO                 = 94;
jtulach@144
   230
    public final int SWITCH             = 95;
jtulach@144
   231
    public final int CASE               = 96;
jtulach@144
   232
    public final int DEFAULT            = 97;
jtulach@144
   233
    public final int BREAK              = 98;
jtulach@144
   234
    public final int CONTINUE           = 99;
jtulach@144
   235
    public final int RETURN             = 100;
jtulach@144
   236
    public final int TRY                = 101;
jtulach@144
   237
    public final int CATCH              = 102;
jtulach@144
   238
    public final int FINALLY            = 103;
jtulach@144
   239
    public final int THROW              = 104;
jtulach@144
   240
    public final int STAT               = 105;
jtulach@144
   241
    public final int EXPRESSION         = 106;
jtulach@144
   242
    public final int DECLARATION        = 107;
jtulach@144
   243
    public final int VARDECLARATION     = 108;
jtulach@144
   244
jtulach@144
   245
    /*
jtulach@144
   246
     * Declaration keywords
jtulach@144
   247
     */
jtulach@144
   248
    public final int IMPORT             = 110;
jtulach@144
   249
    public final int CLASS              = 111;
jtulach@144
   250
    public final int EXTENDS            = 112;
jtulach@144
   251
    public final int IMPLEMENTS         = 113;
jtulach@144
   252
    public final int INTERFACE          = 114;
jtulach@144
   253
    public final int PACKAGE            = 115;
jtulach@144
   254
jtulach@144
   255
    /*
jtulach@144
   256
     * Modifier keywords
jtulach@144
   257
     */
jtulach@144
   258
    public final int PRIVATE    = 120;
jtulach@144
   259
    public final int PUBLIC             = 121;
jtulach@144
   260
    public final int PROTECTED  = 122;
jtulach@144
   261
    public final int CONST              = 123;
jtulach@144
   262
    public final int STATIC             = 124;
jtulach@144
   263
    public final int TRANSIENT          = 125;
jtulach@144
   264
    public final int SYNCHRONIZED       = 126;
jtulach@144
   265
    public final int NATIVE             = 127;
jtulach@144
   266
    public final int FINAL              = 128;
jtulach@144
   267
    public final int VOLATILE   = 129;
jtulach@144
   268
    public final int ABSTRACT   = 130;
jtulach@144
   269
    public final int STRICT             = 165;
jtulach@144
   270
jtulach@144
   271
    /*
jtulach@144
   272
     * Punctuation
jtulach@144
   273
     */
jtulach@144
   274
    public final int SEMICOLON  = 135;
jtulach@144
   275
    public final int COLON              = 136;
jtulach@144
   276
    public final int QUESTIONMARK       = 137;
jtulach@144
   277
    public final int LBRACE             = 138;
jtulach@144
   278
    public final int RBRACE             = 139;
jtulach@144
   279
    public final int LPAREN             = 140;
jtulach@144
   280
    public final int RPAREN             = 141;
jtulach@144
   281
    public final int LSQBRACKET = 142;
jtulach@144
   282
    public final int RSQBRACKET = 143;
jtulach@144
   283
    public final int THROWS     = 144;
jtulach@144
   284
jtulach@144
   285
    /*
jtulach@144
   286
     * Special tokens
jtulach@144
   287
     */
jtulach@144
   288
    public final int ERROR              = 145;          // an error
jtulach@144
   289
    public final int COMMENT    = 146;          // not used anymore.
jtulach@144
   290
    public final int TYPE               = 147;
jtulach@144
   291
    public final int LENGTH             = 148;
jtulach@144
   292
    public final int INLINERETURN       = 149;
jtulach@144
   293
    public final int INLINEMETHOD       = 150;
jtulach@144
   294
    public final int INLINENEWINSTANCE  = 151;
jtulach@144
   295
jtulach@144
   296
    /*
jtulach@144
   297
     * Added for jasm
jtulach@144
   298
     */
jtulach@144
   299
        public final int METHODREF      = 152;
jtulach@144
   300
        public final int FIELDREF       = 153;
jtulach@144
   301
    public final int STACK              = 154;
jtulach@144
   302
    public final int LOCAL              = 155;
jtulach@144
   303
    public final int CPINDEX    = 156;
jtulach@144
   304
    public final int CPNAME             = 157;
jtulach@144
   305
    public final int SIGN               = 158;
jtulach@144
   306
    public final int BITS               = 159;
jtulach@144
   307
    public final int INF                = 160;
jtulach@144
   308
    public final int NAN                = 161;
jtulach@144
   309
    public final int INNERCLASS = 162;
jtulach@144
   310
    public final int OF         = 163;
jtulach@144
   311
    public final int SYNTHETIC          = 164;
jtulach@144
   312
// last used=165;
jtulach@144
   313
jtulach@144
   314
   /*
jtulach@144
   315
     * Operator precedence
jtulach@144
   316
     */
jtulach@144
   317
    public static final int opPrecedence[] = {
jtulach@144
   318
        10,     11,     11,     11,     11,     11,     11,     11,     11,     11,
jtulach@144
   319
        11,     11,     11,     12,     13,     14,     15,     16,     17,     18,
jtulach@144
   320
        18,     19,     19,     19,     19,     19,     20,     20,     20,     21,
jtulach@144
   321
        21,     22,     22,     22,     23,     24,     24,     24,     24,     24,
jtulach@144
   322
        24,     25,     25,     26,     26,     26,     26,     26,     26
jtulach@144
   323
    };
jtulach@144
   324
jtulach@144
   325
    /*
jtulach@144
   326
     * Operator names
jtulach@144
   327
     */
jtulach@144
   328
    public static final String opNames[] = {
jtulach@144
   329
        ",",            "=",            "*=",           "/=",           "%=",
jtulach@144
   330
        "+=",           "-=",           "<<=",          ">>=",          "<<<=",
jtulach@144
   331
        "&=",           "|=",           "^=",           "?:",           "||",
jtulach@144
   332
        "&&",           "|",            "^",            "&",            "!=",
jtulach@144
   333
        "==",           ">=",           ">",            "<=",           "<",
jtulach@144
   334
        "instanceof",   "<<",           ">>",           "<<<",          "+",
jtulach@144
   335
        "-",            "/",            "%",            "*",            "cast",
jtulach@144
   336
        "+",            "-",            "!",            "~",            "++",
jtulach@144
   337
        "--",           "new",          "new",          "new",          "++",
jtulach@144
   338
        "--",           "field",        "method",       "[]",           "new",
jtulach@144
   339
        "++",           "--",           null,           null,           null,
jtulach@144
   340
jtulach@144
   341
        "convert",      "expr",         "array",        "goto",         null,
jtulach@144
   342
jtulach@144
   343
        "Identifier",   "Boolean",      "Byte",         "Char",         "Short",
jtulach@144
   344
        "Integer",              "Long",         "Float",        "Double",       "String",
jtulach@144
   345
jtulach@144
   346
        "byte",         "char",         "short",        "int",          "long",
jtulach@144
   347
        "float",        "double",       "void",         "boolean",      null,
jtulach@144
   348
jtulach@144
   349
        "true",         "false",        "this",         "super",        "null",
jtulach@144
   350
        null,           null,           null,           null,           null,
jtulach@144
   351
jtulach@144
   352
        "if",           "else",         "for",          "while",        "do",
jtulach@144
   353
        "switch",       "case",         "default",      "break",        "continue",
jtulach@144
   354
        "return",       "try",          "catch",        "finally",      "throw",
jtulach@144
   355
        "stat",         "expression",   "declaration",  "declaration",  null,
jtulach@144
   356
jtulach@144
   357
        "import",       "class",        "extends",      "implements",   "interface",
jtulach@144
   358
        "package",      null,           null,           null,           null,
jtulach@144
   359
jtulach@144
   360
        "private",      "public",       "protected",    "const",        "static",
jtulach@144
   361
        "transient",    "synchronized", "native",       "final",        "volatile",
jtulach@144
   362
        "abstract",     null,           null,           null,           null,
jtulach@144
   363
jtulach@144
   364
        ";",            ":",            "?",            "{",            "}",
jtulach@144
   365
        "(",            ")",            "[",            "]",            "throws",
jtulach@144
   366
        "error",        "comment",      "type",         "length",       "inline-return",
jtulach@144
   367
        "inline-method", "inline-new",
jtulach@144
   368
        "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN",
jtulach@144
   369
        "bits", "INF", "NaN", "InnerClass", "of", "synthetic"
jtulach@144
   370
    };
jtulach@144
   371
jtulach@144
   372
}