diff options
author | 2017-08-22 16:29:06 +0200 | |
---|---|---|
committer | 2017-08-22 17:45:42 +0200 | |
commit | f129657059d79fc0d4363244d698f295866d91f6 (patch) | |
tree | 351c1a615cf717a422917fe1078e33cb44a37771 /src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java | |
parent | 5a0d6ffca858016d33d11b14e4b262b495620f8a (diff) |
Split Info into SkylarkInfo and NativeInfo.
Prerequisite to implementing shape-declaration and shape-sharing
for declared providers, and cleaning up NativeInfo interface.
RELNOTES: None.
PiperOrigin-RevId: 166057070
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java new file mode 100644 index 0000000000..d52fa87a1d --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java @@ -0,0 +1,54 @@ +// Copyright 2017 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.devtools.build.lib.packages; + +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.events.Location; +import java.util.Map; + +/** Base class for native implementations of {@link Info}. */ +// todo(vladmos,dslomov): make abstract once DefaultInfo stops instantiating it. +public class NativeInfo extends Info { + protected final ImmutableMap<String, Object> values; + + @Override + public Object getValue(String name) { + return values.get(name); + } + + @Override + public boolean hasKey(String name) { + return values.containsKey(name); + } + + @Override + public ImmutableCollection<String> getKeys() { + return values.keySet(); + } + + public NativeInfo(NativeProvider<?> provider) { + super(provider, Location.BUILTIN); + this.values = ImmutableMap.of(); + } + + public NativeInfo(NativeProvider<?> provider, Map<String, Object> values, Location loc) { + super(provider, loc); + this.values = copyValues(values); + } + + public NativeInfo(NativeProvider<?> provider, Map<String, Object> values) { + this(provider, values, Location.BUILTIN); + } +} |