/******************************************************************************* * Copyright (c) 2008, 2010 Institute for Software, HSR Hochschule fuer Technik * Rapperswil, University of applied sciences 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: * Institute for Software - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.ui.refactoring; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember; /** * Represents the visibility of an IASTName. * */ public class Visibility { /** * The visibility public. */ public static final Visibility PUBLIC = new Visibility(){ @Override public String stringValue(){ return "public"; //$NON-NLS-1$ } }; /** * The visibility protected. */ public static final Visibility PROTECTED = new Visibility(){ @Override public String stringValue(){ return "protected"; //$NON-NLS-1$ } }; /** * The visibility private. */ public static final Visibility PRIVATE = new Visibility(){ @Override public String stringValue(){ return "private"; //$NON-NLS-1$ } }; /** * The visibility unknown, cause of parsing error. */ public static final Visibility UNKNOWN = new Visibility(){ }; private Visibility(){} public static Visibility getVisibility(IASTName name){ try { ICPPMember member = ((ICPPMember)name.resolveBinding()); switch (member.getVisibility()){ case ICPPASTVisibilityLabel.v_public: return PUBLIC; case ICPPASTVisibilityLabel.v_protected: return PROTECTED; case ICPPASTVisibilityLabel.v_private: return PRIVATE; default: return UNKNOWN; } } catch (RuntimeException e){ return UNKNOWN; } } public String stringValue(){ return ""; //$NON-NLS-1$ } @Override public String toString() { return stringValue(); } }