// Copyright Epic Games, Inc. All Rights Reserved. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace UnrealBuildTool { /// /// Represents a layer within the rules hierarchy. Any module is created within a certain scope, and may only reference modules in an equal or parent scope (eg. engine modules cannot reference project modules). /// class RulesScope { /// /// Name of this scope /// public string Name; /// /// The parent scope /// public RulesScope? Parent; /// /// Constructor /// /// Name of this scope /// The parent scope public RulesScope(string Name, RulesScope? Parent) { this.Name = Name; this.Parent = Parent; } /// /// Checks whether this scope contains another scope /// /// The other scope to check /// True if this scope contains the other scope public bool Contains(RulesScope Other) { for(RulesScope? Scope = this; Scope != null; Scope = Scope.Parent) { if(Scope == Other) { return true; } } return false; } /// /// Formats the hierarchy of scopes /// /// String representing the hierarchy of scopes public string FormatHierarchy() { if(Parent == null) { return Name; } else { return String.Format("{0} -> {1}", Name, Parent.FormatHierarchy()); } } } }