1 // Copyright 2014 The Bazel Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 package com.google.devtools.common.options;
15 
16 import javax.annotation.Nullable;
17 
18 /**
19  * A read-only interface for options parser results, which only allows to query the options of
20  * a specific class, but not e.g. the residue any other information pertaining to the command line.
21  */
22 public interface OptionsClassProvider {
23   public static final OptionsClassProvider EMPTY = new OptionsClassProvider() {
24     @Override @Nullable
25     public <O extends OptionsBase> O getOptions(Class<O> optionsClass) {
26       return null;
27     }
28   };
29 
30   /**
31    * Returns the options instance for the given {@code optionsClass}, that is,
32    * the parsed options, or null if it is not among those available.
33    *
34    * <p>The returned options should be treated by library code as immutable and
35    * a provider is permitted to return the same options instance multiple times.
36    */
getOptions(Class<O> optionsClass)37   @Nullable <O extends OptionsBase> O getOptions(Class<O> optionsClass);
38 }
39