blob: 641bf35d50719dc7a372e7886f815f39e625a3a2 [file] [log] [blame]
/*
* Copyright 2016 The Bazel Authors. All rights reserved.
*
* 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.idea.blaze.base.ideinfo;
import com.google.common.collect.ImmutableList;
import com.google.idea.blaze.base.model.primitives.ExecutionRootPath;
import java.io.Serializable;
/**
* Sister class to {@link JavaRuleIdeInfo}
*/
public class CRuleIdeInfo implements Serializable {
private static final long serialVersionUID = 6L;
public final ImmutableList<ArtifactLocation> sources;
// From the cpp compilation context provider. These should all be for the entire transitive closure.
public final ImmutableList<ExecutionRootPath> transitiveIncludeDirectories;
public final ImmutableList<ExecutionRootPath> transitiveQuoteIncludeDirectories;
public final ImmutableList<String> transitiveDefines;
public final ImmutableList<ExecutionRootPath> transitiveSystemIncludeDirectories;
public CRuleIdeInfo(
ImmutableList<ArtifactLocation> sources,
ImmutableList<ExecutionRootPath> transitiveIncludeDirectories,
ImmutableList<ExecutionRootPath> transitiveQuoteIncludeDirectories,
ImmutableList<String> transitiveDefines,
ImmutableList<ExecutionRootPath> transitiveSystemIncludeDirectories
) {
this.sources = sources;
this.transitiveIncludeDirectories = transitiveIncludeDirectories;
this.transitiveQuoteIncludeDirectories = transitiveQuoteIncludeDirectories;
this.transitiveDefines = transitiveDefines;
this.transitiveSystemIncludeDirectories = transitiveSystemIncludeDirectories;
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private final ImmutableList.Builder<ArtifactLocation> sources = ImmutableList.builder();
private final ImmutableList.Builder<ExecutionRootPath> transitiveIncludeDirectories = ImmutableList.builder();
private final ImmutableList.Builder<ExecutionRootPath> transitiveQuoteIncludeDirectories = ImmutableList.builder();
private final ImmutableList.Builder<String> transitiveDefines = ImmutableList.builder();
private final ImmutableList.Builder<ExecutionRootPath> transitiveSystemIncludeDirectories = ImmutableList.builder();
public Builder addSources(Iterable<ArtifactLocation> sources) {
this.sources.addAll(sources);
return this;
}
public Builder addTransitiveIncludeDirectories(Iterable<ExecutionRootPath> transitiveIncludeDirectories) {
this.transitiveIncludeDirectories.addAll(transitiveIncludeDirectories);
return this;
}
public Builder addTransitiveQuoteIncludeDirectories(Iterable<ExecutionRootPath> transitiveQuoteIncludeDirectories) {
this.transitiveQuoteIncludeDirectories.addAll(transitiveQuoteIncludeDirectories);
return this;
}
public Builder addTransitiveDefines(Iterable<String> transitiveDefines) {
this.transitiveDefines.addAll(transitiveDefines);
return this;
}
public Builder addTransitiveSystemIncludeDirectories(Iterable<ExecutionRootPath> transitiveSystemIncludeDirectories) {
this.transitiveSystemIncludeDirectories.addAll(transitiveSystemIncludeDirectories);
return this;
}
public CRuleIdeInfo build() {
return new CRuleIdeInfo(
sources.build(),
transitiveIncludeDirectories.build(),
transitiveQuoteIncludeDirectories.build(),
transitiveDefines.build(),
transitiveSystemIncludeDirectories.build()
);
}
}
@Override
public String toString() {
return "CRuleIdeInfo{" + "\n" +
" sources=" + sources + "\n" +
" transitiveIncludeDirectories=" + transitiveIncludeDirectories + "\n" +
" transitiveQuoteIncludeDirectories=" + transitiveQuoteIncludeDirectories + "\n" +
" transitiveDefines=" + transitiveDefines + "\n" +
" transitiveSystemIncludeDirectories=" + transitiveSystemIncludeDirectories + "\n" +
'}';
}
}