/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.core.compiler; import org.eclipse.dltk.core.Flags; public class PHPFlags extends Flags implements IPHPModifiers { /** * Returns whether the given integer includes the <code>default</code> * modifier. That usually means that the element has no 'public', * 'protected' or 'private' modifiers at all. * * @param flags * the flags * @return <code>true</code> if the <code>default</code> modifier is * included */ public static boolean isDefault(int flags) { return !isPrivate(flags) && !isProtected(flags) && !isPublic(flags); } /** * Returns whether the given integer includes the <code>namespace</code> * modifier. * * @param flags * the flags * @return <code>true</code> if the <code>namespace</code> modifier is * included */ public static boolean isNamespace(int flags) { return (flags & AccNameSpace) != 0; } /** * Returns whether the given integer includes the <code>namespace</code> * modifier. * * @param flags * the flags * @return <code>true</code> if the <code>namespace</code> modifier is * included */ public static boolean isTrait(int flags) { return (flags & AccTrait) != 0; } public static boolean isMagicProperty(int flags) { return (flags & AccMagicProperty) != 0; } /** * Returns whether the given integer includes the <code>constant</code> * modifier. * * @param flags * the flags * @return <code>true</code> if the <code>constant</code> modifier is * included */ public static boolean isConstant(int flags) { return (flags & AccConstant) != 0; } /** * Returns whether the given integer includes the <code>class</code> * modifier. * * @param flags * the flags * @return <code>true</code> if the <code>class</code> modifier is included */ public static boolean isClass(int flags) { return !isNamespace(flags) && !isInterface(flags) && !isTrait(flags); } public static String toString(int mod) { StringBuilder sb = new StringBuilder(); if ((mod & AccPublic) != 0) { sb.append("public "); //$NON-NLS-1$ } if ((mod & AccProtected) != 0) { sb.append("protected "); //$NON-NLS-1$ } if ((mod & AccPrivate) != 0) { sb.append("private "); //$NON-NLS-1$ } // Canonical order if ((mod & AccAbstract) != 0) { sb.append("abstract "); //$NON-NLS-1$ } if ((mod & AccStatic) != 0) { sb.append("static "); //$NON-NLS-1$ } if ((mod & AccFinal) != 0) { sb.append("final "); //$NON-NLS-1$ } int len; if ((len = sb.length()) > 0) { /* trim trailing space */ return sb.toString().substring(0, len - 1); } return ""; //$NON-NLS-1$ } public static boolean isDeprecated(int flags) { return (flags & AccDeprecated) != 0; } public static boolean isAnonymous(int flags) { return (flags & AccAnonymous) != 0; } /** * @since 4.0 */ public static boolean isVariadic(int flags) { return (flags & AccVariadic) != 0; } /** * @since 4.1 */ public static boolean isReference(int flags) { return (flags & AccReference) != 0; } /** * @since 4.1 */ public static boolean isInheritdoc(int flags) { return (flags & AccInheritdoc) != 0; } /** * @since 4.1 */ public static boolean isNullable(int flags) { return (flags & AccNullable) != 0; } }