| File: Internal\GrammarBuilding\GrammarBuilderRuleRef.cs | Web Access |
| Project: src\runtime\src\libraries\System.Speech\src\System.Speech.csproj (System.Speech) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; using System.Speech.Internal.SrgsParser; namespace System.Speech.Internal.GrammarBuilding { internal sealed class GrammarBuilderRuleRef : GrammarBuilderBase { #region Constructors internal GrammarBuilderRuleRef(Uri uri, string? rule) { _uri = uri.OriginalString + ((rule != null) ? "#" + rule : ""); } private GrammarBuilderRuleRef(string sgrsUri) { _uri = sgrsUri; } #endregion #region Public Methods public override bool Equals([NotNullWhen(true)] object? obj) { if (obj is not GrammarBuilderRuleRef refObj) { return false; } return _uri == refObj._uri; } public override int GetHashCode() { return _uri.GetHashCode(); } #endregion #region Internal Methods internal override GrammarBuilderBase Clone() { return new GrammarBuilderRuleRef(_uri); } internal override IElement CreateElement(IElementFactory elementFactory, IElement parent, IRule? rule, IdentifierCollection ruleIds) { Uri ruleUri = new(_uri, UriKind.RelativeOrAbsolute); return elementFactory.CreateRuleRef(parent, ruleUri, null, null); } #endregion #region Internal Properties internal override string DebugSummary { get { return "#" + _uri; } } #endregion #region Private Fields private readonly string _uri; #endregion } }