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