| /* | |
| * | |
| * Copyright 2002-2004 The Ant-Contrib project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package net.sf.antcontrib.cpptasks; | |
| import java.io.File; | |
| import net.sf.antcontrib.cpptasks.compiler.ProcessorConfiguration; | |
| /** | |
| * A description of a file built or to be built | |
| */ | |
| public final class TargetInfo { | |
| private static final File[] emptyFileArray = new File[0]; | |
| private/* final */ProcessorConfiguration config; | |
| private/* final */File output; | |
| private boolean rebuild; | |
| private/* final */File[] sources; | |
| private File[] sysSources; | |
| public TargetInfo(ProcessorConfiguration config, File[] sources, | |
| File[] sysSources, File output, boolean rebuild) { | |
| if (config == null) { | |
| throw new NullPointerException("config"); | |
| } | |
| if (sources == null) { | |
| throw new NullPointerException("sources"); | |
| } | |
| if (output == null) { | |
| throw new NullPointerException("output"); | |
| } | |
| this.config = config; | |
| this.sources = (File[]) sources.clone(); | |
| if (sysSources == null) { | |
| this.sysSources = emptyFileArray; | |
| } else { | |
| this.sysSources = (File[]) sysSources.clone(); | |
| } | |
| this.output = output; | |
| this.rebuild = rebuild; | |
| // | |
| // if the output doesn't exist, must rebuild it | |
| // | |
| if (!output.exists()) { | |
| rebuild = true; | |
| } | |
| } | |
| public String[] getAllSourcePaths() { | |
| String[] paths = new String[sysSources.length + sources.length]; | |
| for (int i = 0; i < sysSources.length; i++) { | |
| paths[i] = sysSources[i].toString(); | |
| } | |
| int offset = sysSources.length; | |
| for (int i = 0; i < sources.length; i++) { | |
| paths[offset + i] = sources[i].toString(); | |
| } | |
| return paths; | |
| } | |
| public File[] getAllSources() { | |
| File[] allSources = new File[sources.length + sysSources.length]; | |
| for (int i = 0; i < sysSources.length; i++) { | |
| allSources[i] = sysSources[i]; | |
| } | |
| int offset = sysSources.length; | |
| for (int i = 0; i < sources.length; i++) { | |
| allSources[i + offset] = sources[i]; | |
| } | |
| return allSources; | |
| } | |
| public ProcessorConfiguration getConfiguration() { | |
| return config; | |
| } | |
| public File getOutput() { | |
| return output; | |
| } | |
| public boolean getRebuild() { | |
| return rebuild; | |
| } | |
| /** | |
| * Returns an array of SourceHistory objects (contains relative path and | |
| * last modified time) for the source[s] of this target | |
| */ | |
| public SourceHistory[] getSourceHistories(String basePath) { | |
| SourceHistory[] histories = new SourceHistory[sources.length]; | |
| for (int i = 0; i < sources.length; i++) { | |
| String relativeName = CUtil.getRelativePath(basePath, sources[i]); | |
| long lastModified = sources[i].lastModified(); | |
| histories[i] = new SourceHistory(relativeName, lastModified); | |
| } | |
| return histories; | |
| } | |
| public String[] getSourcePaths() { | |
| String[] paths = new String[sources.length]; | |
| for (int i = 0; i < sources.length; i++) { | |
| paths[i] = sources[i].toString(); | |
| } | |
| return paths; | |
| } | |
| public File[] getSources() { | |
| File[] clone = (File[]) sources.clone(); | |
| return clone; | |
| } | |
| public String[] getSysSourcePaths() { | |
| String[] paths = new String[sysSources.length]; | |
| for (int i = 0; i < sysSources.length; i++) { | |
| paths[i] = sysSources[i].toString(); | |
| } | |
| return paths; | |
| } | |
| public File[] getSysSources() { | |
| File[] clone = (File[]) sysSources.clone(); | |
| return clone; | |
| } | |
| public void mustRebuild() { | |
| this.rebuild = true; | |
| } | |
| } |