1
/*******************************************************************************
2
* Copyright (c) 2005, 2007 Intel Corporation and others.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* Intel Corporation - Initial API and implementation
10
*******************************************************************************/
11
package org.eclipse.cdt.internal.core.cdtvariables;
13
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
14
import org.eclipse.cdt.utils.cdtvariables.ICdtVariableSupplier;
15
import org.eclipse.cdt.utils.cdtvariables.IVariableContextInfo;
16
import org.eclipse.core.resources.IWorkspace;
17
import org.eclipse.core.resources.ResourcesPlugin;
20
* This is the default implementation of the IMacroContextInfo
24
public class DefaultVariableContextInfo implements ICoreVariableContextInfo {
26
private ICdtVariableSupplier fSuppliers[];
30
public DefaultVariableContextInfo(int type, Object data){
35
protected DefaultVariableContextInfo(int type, Object data, ICdtVariableSupplier suppliers[]){
38
fSuppliers = suppliers;
41
protected ICdtVariableSupplier[] getSuppliers(int type, Object data){
43
case CONTEXT_CONFIGURATION:
44
if(data instanceof ICConfigurationDescription){
45
return new ICdtVariableSupplier[]{
46
CdtVariableManager.fUserDefinedMacroSupplier,
47
CdtVariableManager.fBuildSystemVariableSupplier,
48
CdtVariableManager.fEnvironmentMacroSupplier,
49
CdtVariableManager.fCdtMacroSupplier
53
case CONTEXT_WORKSPACE:
54
if(data == null || data instanceof IWorkspace){
55
return new ICdtVariableSupplier[]{
56
CdtVariableManager.fUserDefinedMacroSupplier,
57
CdtVariableManager.fEnvironmentMacroSupplier,
58
CdtVariableManager.fCdtMacroSupplier,
59
CdtVariableManager.fEclipseVariablesMacroSupplier
63
case CONTEXT_INSTALLATIONS:
65
return new ICdtVariableSupplier[]{
66
CdtVariableManager.fCdtMacroSupplier
70
case CONTEXT_ECLIPSEENV:
72
return new ICdtVariableSupplier[]{
73
CdtVariableManager.fEnvironmentMacroSupplier
82
* @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getContextType()
84
public int getContextType() {
89
* @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getContextData()
91
public Object getContextData() {
96
* @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getSuppliers()
98
public ICdtVariableSupplier[] getSuppliers() {
99
if(fSuppliers == null)
100
fSuppliers = getSuppliers(fType, fData);
105
* @see org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo#getNext()
107
public IVariableContextInfo getNext() {
109
case CONTEXT_CONFIGURATION:
110
if(fData instanceof ICConfigurationDescription){
111
IWorkspace wsp = ResourcesPlugin.getWorkspace();
113
return new DefaultVariableContextInfo(
118
case CONTEXT_WORKSPACE:
119
if(fData instanceof IWorkspace){
120
return new DefaultVariableContextInfo(
121
CONTEXT_INSTALLATIONS,
125
case CONTEXT_INSTALLATIONS:
127
return new DefaultVariableContextInfo(
132
case CONTEXT_ECLIPSEENV: