aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-08-22 16:29:06 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-08-22 17:45:42 +0200
commitf129657059d79fc0d4363244d698f295866d91f6 (patch)
tree351c1a615cf717a422917fe1078e33cb44a37771 /src/main/java/com/google/devtools/build/lib/packages/NativeInfo.java
parent5a0d6ffca858016d33d11b14e4b262b495620f8a (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.java54
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);
+ }
+}