/*******************************************************************************
* Copyright (c) 2015 ARM Ltd. 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:
* ARM Ltd and ARM Germany GmbH - Initial API and implementation
*******************************************************************************/
package com.arm.cmsis.pack.rte.dependencies;
import java.util.Collection;
import com.arm.cmsis.pack.enums.EEvaluationResult;
import com.arm.cmsis.pack.rte.components.IRteComponent;
import com.arm.cmsis.pack.rte.components.IRteComponentItem;
/**
* Interface for dependency evaluation and resolving
*/
public interface IRteDependency extends IRteDependencyItem {
/**
* Checks if this dependency is resolved
* @return true if resolved
*/
boolean isResolved();
/**
* Returns dependency evaluation result for specific component candidate
* @return dependency evaluation result if component found, otherwise EEvaluationResult.UNDEFINED
*/
EEvaluationResult getEvaluationResult(IRteComponent component);
/**
* Returns list of collected components which are candidates to resolve dependencies
* @return list of collected candidates to resolve dependencies
*/
Collection<IRteComponent> getComponents();
/**
* Returns component that best matches dependency
* @return list of collected candidates to resolve dependencies
*/
IRteComponent getBestMatch();
/**
* Adds component to the internal list of candidate components
* @param component that is a candidate to fulfill dependency
* @param result result of the evaluation showing to which extent the component fulfills the dependency
*/
void addComponent(IRteComponent component, EEvaluationResult result);
/**
* Adds component hierarchy item that stopped dependency evaluation
* @param item a component hierarchy at which evaluation has stopped
* @param result reason why evaluation has stopped
*/
void addStopItem(IRteComponentItem item, EEvaluationResult result);
int getFlags();
}