| /******************************************************************************* |
| * Copyright (c) 2005, 2007 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 |
| * |
| |
| *******************************************************************************/ |
| package org.eclipse.dltk.core; |
| |
| /** |
| * Common protocol for model elements that can be members of modules. |
| */ |
| public interface IMember extends IModelElement, ISourceReference, IParent { |
| |
| /** |
| * Returns the modifier flags for this member. |
| * <p> |
| * Note that only flags as indicated in the source are returned. Thus if an |
| * interface defines a method <code>void myMethod();</code> the flags don't |
| * include the 'public' flag. |
| * |
| * @exception ModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource. |
| * @return the modifier flags for this member |
| * @see Flags |
| */ |
| public int getFlags() throws ModelException; |
| |
| /** |
| * Returns the package name in which this member is declared, or |
| * <code>null</code> if this member is not declared in a package (for |
| * example, nested into another member). This is a handle-only method. |
| * |
| * @return the package name if which this member is declared, or |
| * <code>null</code> if this member is not declared in the package |
| * @throws ModelException |
| * @since 3.0 |
| */ |
| INamespace getNamespace() throws ModelException; |
| |
| /** |
| * Returns the type in which this member is declared, or <code>null</code> |
| * if this member is not declared in a type (for example, a top-level type). |
| * This is a handle-only method. |
| * |
| * @return the type in which this member is declared, or <code>null</code> |
| * if this member is not declared in a type (for example, a |
| * top-level type) |
| */ |
| IType getDeclaringType(); |
| |
| /** |
| * Returns the source module in which this member is declared, or |
| * <code>null</code> if this member is not declared in a compilation unit |
| * (for example, a binary type). This is a handle-only method. |
| * |
| * @return the source module in which this member is declared, or |
| * <code>null</code> if this member is not declared in a compilation |
| * unit (for example, a binary type) |
| */ |
| ISourceModule getSourceModule(); |
| |
| /** |
| * Returns the local type declared in this source member with the given |
| * simple name and/or with the specified position relative to the order they |
| * are defined in the source. The name is empty if it is an anonymous type. |
| * Numbering starts at 1 (thus the first occurrence is occurrence 1, not |
| * occurrence 0). This is a handle-only method. The type may or may not |
| * exist. Throws a <code>RuntimeException</code> if this member is not a |
| * source member. |
| * |
| * @param name |
| * the given simple name |
| * @param occurrenceCount |
| * the specified position |
| * @return the type with the given name and/or with the specified position |
| * relative to the order they are defined in the source |
| * |
| */ |
| IType getType(String name, int occurrenceCount); |
| } |