/*
* 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 java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.eclipse.core.resources.IFile;
/**
* Holds data describing QMake environment (pro file, qmake file, env. vars.) for a specific QMake run provided by QMakeEnv instance.
*/
public final class QMakeEnvInfo {
private final IFile proFile;
private final String qmakeFilePath;
private final Map<String, String> environment;
private final Set<IFile> sensitiveFiles;
/**
* Creates QMakeEnvInfo.
*
* @param proFile the root-level .pro file
* @param qmakeFilePath the absolute path of qmake executable
* @param environment environment variables
* @param sensitiveFiles the list of IFile that needs to be tracked by IQMakeProjectInfo since their change might affect
* an environment for running qmake.
*/
public QMakeEnvInfo(IFile proFile, String qmakeFilePath, Map<String,String> environment, Collection<IFile> sensitiveFiles) {
this.proFile = proFile;
this.qmakeFilePath = qmakeFilePath;
this.environment = environment != null ? new HashMap<String,String>(environment) : Collections.<String,String>emptyMap();
this.sensitiveFiles = sensitiveFiles != null ? new HashSet<IFile>(sensitiveFiles) : Collections.<IFile>emptySet();
}
/**
* Returns IFile of .pro file.
*
* @return the .pro file
*/
public IFile getProFile() {
return proFile;
}
/**
* Returns an absolute path of qmake executable.
*
* @return the qmake path
*/
public String getQMakeFilePath() {
return qmakeFilePath;
}
/**
* Returns a map of environment variables that are used for qmake run.
*
* @return the environment
*/
public Map<String, String> getEnvironment() {
return environment;
}
/**
* Returns a list of IFile that might affect environment of qmake run.
*
* @return the list sensitive files
*/
public Set<IFile> getSensitiveFiles() {
return sensitiveFiles;
}
}