105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// Copyright 2017 The Bazel Authors. All rights reserved. 205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// 305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// Licensed under the Apache License, Version 2.0 (the "License"); 405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// you may not use this file except in compliance with the License. 505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// You may obtain a copy of the License at 605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// 705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// http://www.apache.org/licenses/LICENSE-2.0 805bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// 905bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// Unless required by applicable law or agreed to in writing, software 1005bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// distributed under the License is distributed on an "AS IS" BASIS, 1105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// See the License for the specific language governing permissions and 1305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin// limitations under the License. 1405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarinpackage com.google.devtools.common.options; 1505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 1605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarinimport javax.annotation.Nullable; 1705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 1805bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin/** 1905bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin * Contains metadata describing the origin of an option. This includes its priority, a message about 2005bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin * where it came from, and whether it was set explicitly or expanded/implied by other flags. 2105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin */ 2205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarinpublic class OptionInstanceOrigin { 2305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin private final OptionPriority priority; 2405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable private final String source; 2505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable private final OptionDefinition implicitDependent; 2605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable private final OptionDefinition expandedFrom; 2705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 2805bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin public OptionInstanceOrigin( 2905bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin OptionPriority priority, 3005bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin String source, 3105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin OptionDefinition implicitDependent, 3205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin OptionDefinition expandedFrom) { 3305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin this.priority = priority; 3405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin this.source = source; 3505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin this.implicitDependent = implicitDependent; 3605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin this.expandedFrom = expandedFrom; 3705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin } 3805bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 3905bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin public OptionPriority getPriority() { 4005bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin return priority; 4105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin } 4205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 4305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable 4405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin public String getSource() { 4505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin return source; 4605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin } 4705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 4805bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable 4905bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin public OptionDefinition getImplicitDependent() { 5005bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin return implicitDependent; 5105bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin } 5205bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin 5305bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin @Nullable 5405bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin public OptionDefinition getExpandedFrom() { 5505bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin return expandedFrom; 5605bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin } 5705bb5c28c6be8320c06d8bb1bafd0be586678138ccalvarin} 58