| File: Internal\SrgsCompiler\CfgArc.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.SrgsCompiler { internal struct CfgArc { #region Constructors internal CfgArc(CfgArc arc) { _flag1 = arc._flag1; _flag2 = arc._flag2; } #endregion #region Internal Properties internal bool RuleRef { get { return ((_flag1 & 0x1) != 0); } set { if (value) { _flag1 |= 0x1; } else { _flag1 &= ~0x1U; } } } internal bool LastArc { get { return ((_flag1 & 0x2) != 0); } set { if (value) { _flag1 |= 0x2; } else { _flag1 &= ~0x2U; } } } internal bool HasSemanticTag { get { return ((_flag1 & 0x4) != 0); } set { if (value) { _flag1 |= 0x4; } else { _flag1 &= ~0x4U; } } } internal bool LowConfRequired { get { return ((_flag1 & 0x8) != 0); } set { if (value) { _flag1 |= 0x8; } else { _flag1 &= ~0x8U; } } } internal bool HighConfRequired { get { return ((_flag1 & 0x10) != 0); } set { if (value) { _flag1 |= 0x10; } else { _flag1 &= ~0x10U; } } } internal uint TransitionIndex { get { return (_flag1 >> 5) & 0x3FFFFF; } set { if (value > 0x3FFFFFU) { XmlParser.ThrowSrgsException(SRID.TooManyArcs); } _flag1 &= ~(0x3FFFFFU << 5); _flag1 |= value << 5; } } internal uint MatchMode { get { return (_flag1 >> 27) & 0x7; } set { _flag1 &= ~(0x38000000U); _flag1 |= value << 27; } } internal uint NextStartArcIndex { get { return (_flag2 >> 8) & 0x3FFFFF; } set { if (value > 0x3FFFFF) { XmlParser.ThrowSrgsException(SRID.TooManyArcs); } _flag2 &= ~(0x3FFFFFU << 8); _flag2 |= value << 8; } } #endregion #region private Fields private uint _flag1; private uint _flag2; #endregion } }