/*
* Copyright (c) 2013, 2015 QNX Software Systems 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.cdt.internal.qt.core.index;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
/**
* Represents a provider for IQMakeEnv which is used to specify an environment for qmake run.
* This class needs to be registered via org.eclipse.cdt.qt.core.qmakeEnvProvider extension point.
*/
public interface IQMakeEnvProvider {
/**
* Creates a QMake environment for a specific IController (aka a project configuration).
*
* @param controller the controller
* @return the IQMakeEnv instance that is used for qmake run;
* or null if this provider cannot create IQMakeEnv instance for the specified IController.
*/
IQMakeEnv createEnv(IController controller);
/**
* Represents a project configuration and provides a control over the environment.
*
* This class is not meant to be implemented.
*/
public interface IController {
/**
* Returns a project configuration for which a QMake environment should be supplied.
*
* @return the project configuration
*/
ICConfigurationDescription getConfiguration();
/**
* Request the controller to schedule a new qmake run to retrieve new QMake information.
* This method should be called when there is any change in IQMakeEnv that might affect resulting IQMakeEnvInfo.
*
* Note that calculation of new QMakeInfo is done immediately if this controller is still active and used.
*/
void scheduleUpdate();
}
}