// Copyright 2016-2019, Pulumi Corporation using System.Collections.Immutable; namespace Pulumi.Serialization { internal static class OutputData { public static OutputData Create(ImmutableHashSet resources, X value, bool isKnown, bool isSecret) => new OutputData(resources, value, isKnown, isSecret); public static (bool isKnown, bool isSecret) Combine(OutputData data, bool isKnown, bool isSecret) => (isKnown && data.IsKnown, isSecret || data.IsSecret); } internal readonly struct OutputData { public readonly ImmutableHashSet Resources; public readonly X Value; public readonly bool IsKnown; public readonly bool IsSecret; public OutputData(ImmutableHashSet resources, X value, bool isKnown, bool isSecret) { Resources = resources; Value = value; IsKnown = isKnown; IsSecret = isSecret; } public static implicit operator OutputData(OutputData data) => new OutputData(data.Resources, data.Value, data.IsKnown, data.IsSecret); public void Deconstruct(out X value, out bool isKnown, out bool isSecret) { value = Value; isKnown = IsKnown; isSecret = IsSecret; } } }