1 /******************************************************************************* 2 * Copyright (c) 2007, 2013 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.pde.api.tools.internal.provisional; 15 16 import org.eclipse.pde.api.tools.internal.search.UseReportConverter; 17 import org.eclipse.pde.api.tools.internal.util.Util; 18 19 /** 20 * Class containing constants and utility methods for visibility modifiers 21 * 22 * @since 1.0.0 23 */ 24 public final class VisibilityModifiers { 25 26 /** 27 * Visibility constant indicating an element is public API. 28 */ 29 public static final int API = 0x0001; 30 /** 31 * Visibility constant indicating a element should not be referenced. This 32 * indicates the element is internal and not intended for general use. 33 */ 34 public static final int PRIVATE = 0x0002; 35 /** 36 * Visibility constant indicating an element is public for a specific 37 * audience (service provider interface). 38 */ 39 public static final int SPI = 0x0004; 40 /** 41 * Visibility constant indicating an element is API but illegal to use. i.e. 42 * the element has API restrictions 43 */ 44 public static final int ILLEGAL_API = 0x0016; 45 /** 46 * Visibility constant indicating an element is private, but some clients 47 * have been permitted access to the element. 48 */ 49 public static final int PRIVATE_PERMISSIBLE = 0x0008; 50 51 /** 52 * Bit mask of all visibilities. 53 */ 54 public static final int ALL_VISIBILITIES = 0xFFFF; 55 56 /** 57 * Constructor no instantiating 58 */ VisibilityModifiers()59 private VisibilityModifiers() { 60 } 61 62 /** 63 * Returns if the modifier is 'API' 64 * 65 * @param modifiers the modifiers to resolve 66 * @return if the modifier is 'API' 67 */ isAPI(int modifiers)68 public static final boolean isAPI(int modifiers) { 69 return (modifiers & API) > 0; 70 } 71 72 /** 73 * Returns if the modifier is 'SPI' 74 * 75 * @param modifiers the modifiers to resolve 76 * @return if the modifier is 'SPI' 77 */ isSPI(int modifiers)78 public static final boolean isSPI(int modifiers) { 79 return (modifiers & SPI) > 0; 80 } 81 82 /** 83 * Returns if the modifier is 'Private' 84 * 85 * @param modifiers the modifiers to resolve 86 * @return if the modifier is 'Private' 87 */ isPrivate(int modifiers)88 public static final boolean isPrivate(int modifiers) { 89 return (modifiers & PRIVATE) > 0; 90 } 91 92 /** 93 * Returns if the modifier is 'Private Permissible' 94 * 95 * @param modifiers the modifiers to resolve 96 * @return if the modifier is 'Private Permissible' 97 */ isPermissiblePrivate(int modifiers)98 public static final boolean isPermissiblePrivate(int modifiers) { 99 return (modifiers & PRIVATE_PERMISSIBLE) > 0; 100 } 101 102 /** 103 * Returns the string representation of the specified visibility modifier or 104 * <code>UNKNOWN_VISIBILITY</code> if the modifier is unknown. 105 * 106 * @param visibility 107 * @return the string representation of the visibility or 108 * <code>UNKNOWN_VISIBILITY</code> 109 * @since 1.0.1 110 */ getVisibilityName(int visibility)111 public static String getVisibilityName(int visibility) { 112 switch (visibility) { 113 case ALL_VISIBILITIES: { 114 return "ALL_VISIBILITIES"; //$NON-NLS-1$ 115 } 116 case API: { 117 return "API"; //$NON-NLS-1$ 118 } 119 case PRIVATE: { 120 return "PRIVATE"; //$NON-NLS-1$ 121 } 122 case PRIVATE_PERMISSIBLE: { 123 return "PRIVATE_PERMISSIBLE"; //$NON-NLS-1$ 124 } 125 case UseReportConverter.FRAGMENT_PERMISSIBLE: { 126 return "FRAGMENT_PERMISSIBLE"; //$NON-NLS-1$ 127 } 128 case SPI: { 129 return "SPI"; //$NON-NLS-1$ 130 } 131 case ILLEGAL_API: { 132 return "ILLEGAL_API"; //$NON-NLS-1$ 133 } 134 case 0: { 135 return "INHERITED"; //$NON-NLS-1$ 136 } 137 default: 138 break; 139 } 140 return Util.UNKNOWN_VISIBILITY; 141 } 142 } 143