Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / SrgsCompiler / OneOf.cs / 1 / OneOf.cs
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------
#region Using directives
using System;
using System.Speech.Internal.SrgsParser;
#endregion
namespace System.Speech.Internal.SrgsCompiler
{
internal class OneOf : ParseElementCollection, IOneOf
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
///
/// Process the 'one-of' element.
///
///
///
public OneOf (Rule rule, Backend backend)
: base (backend, rule)
{
// Create a start and end start.
_startState = _backend.CreateNewState (rule);
_endState = _backend.CreateNewState (rule);
//Add before the start state an epsilon arc
_startArc = _backend.EpsilonTransition (1.0f);
_startArc.End = _startState;
//Add after the end state an epsilon arc
_endArc = _backend.EpsilonTransition (1.0f);
_endArc.Start = _endState;
}
#endregion
//********************************************************************
//
// Internal Method
//
//*******************************************************************
#region Internal Method
///
/// Process the '/one-of' element.
/// Connects all the arsc into an exit enf point.
///
/// Verify OneOf contains at least one child 'item'.
///
///
void IElement.PostParse (IElement parentElement)
{
if (_startArc.End.OutArcs.IsEmpty)
{
XmlParser.ThrowSrgsException (SRID.EmptyOneOf);
}
// Remove the extraneous arc and state if possible at the start and end
_startArc = TrimStart (_startArc, _backend);
_endArc = TrimEnd (_endArc, _backend);
// Connect the one-of to the parrent
base.PostParse ((ParseElementCollection) parentElement);
}
#endregion
//********************************************************************
//
// Protected Method
//
//********************************************************************
#region Protected Method
///
/// Adds a new arc to the one-of
///
///
///
internal override void AddArc (Arc start, Arc end)
{
start = TrimStart (start, _backend);
end = TrimEnd (end, _backend);
State endStartState = end.Start;
State startEndState = start.End;
// Connect the previous arc with the 'start' set the intertion point
if (start.IsEpsilonTransition & start.IsPropertylessTransition && startEndState != null && startEndState.InArcs.IsEmpty)
{
System.Diagnostics.Debug.Assert (start.End == startEndState);
start.End = null;
_backend.MoveOutputTransitionsAndDeleteState (startEndState, _startState);
}
else
{
start.Start = _startState;
}
// Connect with the epsilon transition at the end
if (end.IsEpsilonTransition & end.IsPropertylessTransition && endStartState != null && endStartState.OutArcs.IsEmpty)
{
System.Diagnostics.Debug.Assert (end.Start == endStartState);
end.Start = null;
_backend.MoveInputTransitionsAndDeleteState (endStartState, _endState);
}
else
{
end.End = _endState;
}
}
#endregion
//*******************************************************************
//
// Protected Method
//
//********************************************************************
#region Protected Method
private State _startState;
private State _endState;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbConnectionPoolIdentity.cs
- HttpListenerException.cs
- ScriptResourceMapping.cs
- MediaTimeline.cs
- _MultipleConnectAsync.cs
- DLinqColumnProvider.cs
- FlowDocumentScrollViewer.cs
- UniqueIdentifierService.cs
- AnnotationResource.cs
- Crypto.cs
- DbRetry.cs
- handlecollector.cs
- LocatorPartList.cs
- UserControlFileEditor.cs
- CodeGenerator.cs
- SecurityUtils.cs
- ApplicationServiceHelper.cs
- SoapAttributes.cs
- ModifiableIteratorCollection.cs
- SessionState.cs
- OciLobLocator.cs
- Funcletizer.cs
- DbParameterCollectionHelper.cs
- SHA384.cs
- HandlerBase.cs
- ItemAutomationPeer.cs
- ReachSerializationUtils.cs
- InstanceView.cs
- HtmlWindowCollection.cs
- DeferredElementTreeState.cs
- XPathNodeList.cs
- DesignConnection.cs
- PrintControllerWithStatusDialog.cs
- BaseResourcesBuildProvider.cs
- CryptoKeySecurity.cs
- ValidationSummary.cs
- TreeNode.cs
- SupportingTokenDuplexChannel.cs
- Queue.cs
- SocketInformation.cs
- COM2Enum.cs
- ContextInformation.cs
- XslAst.cs
- Environment.cs
- GridSplitterAutomationPeer.cs
- JsonEnumDataContract.cs
- ActionFrame.cs
- SystemMulticastIPAddressInformation.cs
- WebPartCollection.cs
- ResourcePermissionBaseEntry.cs
- BamlLocalizableResourceKey.cs
- ProgressBarRenderer.cs
- X509UI.cs
- CodeTypeDeclaration.cs
- FontResourceCache.cs
- LostFocusEventManager.cs
- DesignerAdRotatorAdapter.cs
- Color.cs
- Vector3DCollection.cs
- TraceContextEventArgs.cs
- TableCellCollection.cs
- BrowserDefinition.cs
- StandardCommands.cs
- BitmapMetadataEnumerator.cs
- loginstatus.cs
- DataGridSortCommandEventArgs.cs
- Operators.cs
- TextRangeEdit.cs
- SizeAnimationBase.cs
- RunWorkerCompletedEventArgs.cs
- XmlSubtreeReader.cs
- Compiler.cs
- BitHelper.cs
- Content.cs
- ToolStripControlHost.cs
- HwndSubclass.cs
- XmlAttributeProperties.cs
- Hash.cs
- ParameterCollection.cs
- ConfigurationStrings.cs
- WebServiceMethodData.cs
- PolyQuadraticBezierSegment.cs
- HuffCodec.cs
- Drawing.cs
- TableItemStyle.cs
- HashCryptoHandle.cs
- CanExecuteRoutedEventArgs.cs
- ArrangedElement.cs
- CommandHelpers.cs
- HtmlInputSubmit.cs
- ConstNode.cs
- XmlLanguageConverter.cs
- Calendar.cs
- FixedSOMTable.cs
- WinFormsSecurity.cs
- SHA256Managed.cs
- UnconditionalPolicy.cs
- HtmlUtf8RawTextWriter.cs
- ObjectMaterializedEventArgs.cs
- UniformGrid.cs