// Copyright Epic Games, Inc. All Rights Reserved. using System.Collections.Generic; namespace EpicGames.BuildGraph { /// /// Defines a agggregate within a graph, which give the combined status of one or more job steps, and allow building several steps at once. /// public class BgAggregateDef { /// /// Name of this badge /// public string Name { get; } /// /// Set of nodes that must be run for this label to be shown. /// public HashSet RequiredNodes { get; } = new HashSet(); /// /// Constructor /// /// Name of this aggregate public BgAggregateDef(string name) { Name = name; } /// /// Get the name of this label /// /// The name of this label public override string ToString() { return Name; } } /// /// Aggregate that was created from bytecode /// [BgObject(typeof(BgAggregateExpressionDefSerializer))] public class BgAggregateExpressionDef { /// public string Name { get; set; } /// public List RequiredNodes { get; } = new List(); /// /// Labels to add this aggregate to /// public BgLabelDef? Label { get; set; } /// /// Constructor /// public BgAggregateExpressionDef(string name) { Name = name; } /// /// Construct a BgAggregateDef /// /// public BgAggregateDef ToAggregateDef() { BgAggregateDef aggregate = new BgAggregateDef(Name); aggregate.RequiredNodes.UnionWith(RequiredNodes); return aggregate; } } class BgAggregateExpressionDefSerializer : BgObjectSerializer { /// public override BgAggregateExpressionDef Deserialize(BgObjectDef obj) { BgAggregateExpressionDef aggregate = new BgAggregateExpressionDef(obj.Get(x => x.Name, "")); obj.CopyTo(aggregate); return aggregate; } } }