blob: f6fe35773e461e38f51fddc6a0e268efbb58f337 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.api.tools.internal.provisional.search;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.pde.api.tools.internal.provisional.builder.IReference;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiComponent;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiMember;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiScope;
import org.eclipse.pde.api.tools.internal.provisional.model.IApiTypeContainer;
/**
* A default search requestor to use for API tools
*
* @since 1.0.0
*/
public interface IApiSearchRequestor {
/**
* Search mask that will cause the engine to consider API references when
* searching
*
* @see #includesApi()
*/
public static final int INCLUDE_API = 0x0001;
/**
* Search mask that will cause the engine to consider internal references
* when searching
*
* @see #includesInternal()
*/
public static final int INCLUDE_INTERNAL = 0x0002;
/**
* Search mask that will cause the engine to consider illegal API use when
* searching
*/
public static final int INCLUDE_ILLEGAL_USE = 0x0004;
/**
* Returns the {@link IApiScope} to be searched
*
* @return the {@link IApiScope} to be searched
*/
public IApiScope getScope();
/**
* Returns whether this requestor cares about the given
* {@link IApiComponent} or not. This allows the requestor to direct the
* {@link ApiSearchEngine} to ignore certain components.
*
* @param component the component to examine
* @return true if this requestor cares about the given
* {@link IApiComponent}, false otherwise.
*/
public boolean acceptComponent(IApiComponent component);
/**
* Returns whether this requestor cares about the given
* {@link IApiTypeContainer} or not. This allows the requestor to direct the
* {@link ApiSearchEngine} to ignore certain type containers while searching
* a component
*
* @param container
* @return true if this requestor cares about the given
* {@link IApiTypeContainer} false otherwise.
*/
public boolean acceptContainer(IApiTypeContainer container);
/**
* Returns whether this requestor cares about the given {@link IApiMember}
* or not. This allows the requestor to direct the {@link ApiSearchEngine}
* to ignore certain members.
*
* @param member the member to examine
* @return true if this requestor cares about the given {@link IApiMember},
* false otherwise
*/
public boolean acceptMember(IApiMember member);
/**
* Returns whether the given {@link IReference} should be accepted by this
* requestor.
*
* @param reference
* @return true if the reference should be accepted, false otherwise
*/
public boolean acceptReference(IReference reference, IProgressMonitor monitor);
/**
* Returns the or'd listing of {@link IReference} kinds to look for.
*
* @see org.eclipse.pde.api.tools.internal.provisional.builder.ReferenceModifiers
* for a complete listing of reference kinds
*
* @return the listing of {@link IReference} kinds to consider during the
* search this requestor is used for.
*/
public int getReferenceKinds();
/**
* Returns true if the current search mask includes considering references
* to API elements.
*
* @return true if references to API elements should be considered, false
* otherwise
*/
public boolean includesAPI();
/**
* Returns true if the current search mask includes considering references
* to internal elements.
*
* @return true if reference to internal elements should be considered,
* false otherwise
*/
public boolean includesInternal();
/**
* Returns true if the current search mask includes considering illegal API
* use.
*
* @return true if references to illegal API use should be considered, false
* otherwise
*/
public boolean includesIllegalUse();
}