src/share/jaxws_classes/com/sun/codemodel/internal/JMods.java

Thu, 12 Oct 2017 19:44:07 +0800

author
aoqi
date
Thu, 12 Oct 2017 19:44:07 +0800
changeset 760
e530533619ec
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1997, 2011, 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  */
    26 package com.sun.codemodel.internal;
    28 import java.io.PrintWriter;
    29 import java.io.StringWriter;
    31 /**
    32  * Modifier groups.
    33  */
    34 public class JMods implements JGenerable {
    36 //
    37 // mask
    38 //
    39     private static int VAR = JMod.FINAL;
    40     private static int FIELD = (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
    41             | JMod.STATIC | JMod.FINAL
    42             | JMod.TRANSIENT | JMod.VOLATILE);
    43     private static int METHOD = (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED | JMod.FINAL
    44             | JMod.ABSTRACT | JMod.STATIC | JMod.NATIVE | JMod.SYNCHRONIZED);
    45     private static int CLASS = (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
    46             | JMod.STATIC | JMod.FINAL | JMod.ABSTRACT);
    47     private static int INTERFACE = JMod.PUBLIC;
    48     /** bit-packed representation of modifiers. */
    49     private int mods;
    51     private JMods(int mods) {
    52         this.mods = mods;
    53     }
    55     /**
    56      * Gets the bit-packed representaion of modifiers.
    57      */
    58     public int getValue() {
    59         return mods;
    60     }
    62     private static void check(int mods, int legal, String what) {
    63         if ((mods & ~legal) != 0) {
    64             throw new IllegalArgumentException("Illegal modifiers for "
    65                     + what + ": "
    66                     + new JMods(mods).toString());
    67         }
    68         /* ## check for illegal combinations too */
    69     }
    71     static JMods forVar(int mods) {
    72         check(mods, VAR, "variable");
    73         return new JMods(mods);
    74     }
    76     static JMods forField(int mods) {
    77         check(mods, FIELD, "field");
    78         return new JMods(mods);
    79     }
    81     static JMods forMethod(int mods) {
    82         check(mods, METHOD, "method");
    83         return new JMods(mods);
    84     }
    86     static JMods forClass(int mods) {
    87         check(mods, CLASS, "class");
    88         return new JMods(mods);
    89     }
    91     static JMods forInterface(int mods) {
    92         check(mods, INTERFACE, "class");
    93         return new JMods(mods);
    94     }
    96     public boolean isAbstract() {
    97         return (mods & JMod.ABSTRACT) != 0;
    98     }
   100     public boolean isNative() {
   101         return (mods & JMod.NATIVE) != 0;
   102     }
   104     public boolean isSynchronized() {
   105         return (mods & JMod.SYNCHRONIZED) != 0;
   106     }
   108     public void setSynchronized(boolean newValue) {
   109         setFlag(JMod.SYNCHRONIZED, newValue);
   110     }
   112     public void setPrivate() {
   113         setFlag(JMod.PUBLIC, false);
   114         setFlag(JMod.PROTECTED, false);
   115         setFlag(JMod.PRIVATE, true);
   116     }
   118     public void setProtected() {
   119         setFlag(JMod.PUBLIC, false);
   120         setFlag(JMod.PROTECTED, true);
   121         setFlag(JMod.PRIVATE, false);
   122     }
   124     public void setPublic() {
   125         setFlag(JMod.PUBLIC, true);
   126         setFlag(JMod.PROTECTED, false);
   127         setFlag(JMod.PRIVATE, false);
   128     }
   130     public void setFinal(boolean newValue) {
   131         setFlag(JMod.FINAL, newValue);
   132     }
   134     private void setFlag(int bit, boolean newValue) {
   135         mods = (mods & ~bit) | (newValue ? bit : 0);
   136     }
   138     public void generate(JFormatter f) {
   139         if ((mods & JMod.PUBLIC) != 0)        f.p("public");
   140         if ((mods & JMod.PROTECTED) != 0)     f.p("protected");
   141         if ((mods & JMod.PRIVATE) != 0)       f.p("private");
   142         if ((mods & JMod.FINAL) != 0)         f.p("final");
   143         if ((mods & JMod.STATIC) != 0)        f.p("static");
   144         if ((mods & JMod.ABSTRACT) != 0)      f.p("abstract");
   145         if ((mods & JMod.NATIVE) != 0)        f.p("native");
   146         if ((mods & JMod.SYNCHRONIZED) != 0)  f.p("synchronized");
   147         if ((mods & JMod.TRANSIENT) != 0)     f.p("transient");
   148         if ((mods & JMod.VOLATILE) != 0)      f.p("volatile");
   149         }
   151     @Override
   152     public String toString() {
   153         StringWriter s = new StringWriter();
   154         JFormatter f = new JFormatter(new PrintWriter(s));
   155         this.generate(f);
   156         return s.toString();
   157     }
   158 }

mercurial