| File: Internal\GrammarBuilding\GrammarBuilderBase.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.Speech.Internal.SrgsParser; namespace System.Speech.Internal.GrammarBuilding { internal abstract class GrammarBuilderBase { #region Internal Methods internal abstract GrammarBuilderBase Clone(); internal abstract IElement? CreateElement(IElementFactory elementFactory, IElement parent, IRule rule, IdentifierCollection ruleIds); internal virtual int CalcCount(BuilderElements? parent) { Marked = false; Parent = parent; return Count; } #endregion #region Internal Properties /// <summary> /// Used by the GrammarBuilder optimizer to count the number of children and descendant for /// an element /// </summary> internal virtual int Count { get { return _count; } set { _count = value; } } /// <summary> /// Marker to know if an element has already been visited. /// </summary> internal virtual bool Marked { get { return _marker; } set { _marker = value; } } /// <summary> /// Marker to know if an element has already been visited. /// </summary> internal virtual BuilderElements? Parent { get { return _parent; } set { _parent = value; } } internal abstract string DebugSummary { get; } #endregion #region Private Fields private int _count = 1; private bool _marker; private BuilderElements? _parent; #endregion } }