/******************************************************************************* * Copyright (c) 2005, 2009 IBM Corporation 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: * IBM Rational Software - Initial API and implementation * Markus Schorn (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.core.parser; import java.util.Map; /** * Implementation for the {@link IExtendedScannerInfo} interface. Allows to configure the preprocessor. */ public class ExtendedScannerInfo extends ScannerInfo implements IExtendedScannerInfo { private static final String[] EMPTY_STRING_ARRAY = new String[0]; private String[] macroFiles; private String[] includeFiles; private String[] localIncludePaths; public ExtendedScannerInfo() { } public ExtendedScannerInfo(Map<String, String> definedSymbols, String[] includePaths) { super(definedSymbols, includePaths); } public ExtendedScannerInfo(Map<String, String> definedSymbols, String[] includePaths, String[] macroFiles, String[] includeFiles) { super(definedSymbols, includePaths); this.macroFiles = macroFiles; this.includeFiles = includeFiles; } /** * @since 5.3 */ public ExtendedScannerInfo(Map<String, String> definedSymbols, String[] includePaths, String[] macroFiles, String[] includeFiles, String[] localIncludePaths) { super(definedSymbols, includePaths); this.macroFiles = macroFiles; this.includeFiles = includeFiles; this.localIncludePaths = localIncludePaths; } public ExtendedScannerInfo(IScannerInfo info) { super(info.getDefinedSymbols(), info.getIncludePaths()); if (info instanceof IExtendedScannerInfo) { IExtendedScannerInfo einfo = (IExtendedScannerInfo) info; macroFiles = einfo.getMacroFiles(); includeFiles = einfo.getIncludeFiles(); localIncludePaths = einfo.getLocalIncludePath(); } } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.IExtendedScannerInfo#getMacroFiles() */ public String[] getMacroFiles() { if (macroFiles == null) return EMPTY_STRING_ARRAY; return macroFiles; } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.IExtendedScannerInfo#getIncludeFiles() */ public String[] getIncludeFiles() { if (includeFiles == null) return EMPTY_STRING_ARRAY; return includeFiles; } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.IExtendedScannerInfo#getLocalIncludePath() */ public String[] getLocalIncludePath() { if (localIncludePaths == null) return EMPTY_STRING_ARRAY; return localIncludePaths; } }