/*
* 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 com.google.devtools.j2objc.pipeline;
import com.google.devtools.j2objc.Options;
import com.google.devtools.j2objc.file.InputFile;
import com.google.devtools.j2objc.gen.GenerationUnit;
/**
* Contains all the state required to preprocess and eventually compile a source
* file into an AST.
*/
public class ProcessingContext {
// The file may change during preprocessing, but we want to save the path of
// the original source for documentation and line directives.
private final String originalSourcePath;
private InputFile file; // mutable.
private final GenerationUnit generationUnit;
public ProcessingContext(InputFile file, GenerationUnit generationUnit) {
originalSourcePath = file.getOriginalLocation();
this.file = file;
this.generationUnit = generationUnit;
generationUnit.incrementInputs();
}
public static ProcessingContext fromFile(InputFile file, Options options) {
return new ProcessingContext(file, GenerationUnit.newSingleFileUnit(file, options));
}
public static ProcessingContext fromExtractedJarEntry(
InputFile file, String sourceName, Options options) {
return new ProcessingContext(
file, GenerationUnit.newSingleExtractedJarEntryUnit(file, sourceName, options));
}
public String getOriginalSourcePath() {
return originalSourcePath;
}
public InputFile getFile() {
return file;
}
public void setFile(InputFile newFile) {
file = newFile;
}
public GenerationUnit getGenerationUnit() {
return generationUnit;
}
}