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
- AuthenticationSection.cs
- HttpWriter.cs
- CapacityStreamGeometryContext.cs
- LoginUtil.cs
- InvocationExpression.cs
- Accessible.cs
- SQLByteStorage.cs
- XmlIterators.cs
- BlurEffect.cs
- HtmlInputButton.cs
- CodeVariableReferenceExpression.cs
- ListSortDescriptionCollection.cs
- ToolStripDropDownItem.cs
- AvTrace.cs
- Vector.cs
- Transaction.cs
- InlineObject.cs
- TextEditor.cs
- FormParameter.cs
- PartialCachingAttribute.cs
- NodeLabelEditEvent.cs
- SqlDataSourceSelectingEventArgs.cs
- Debugger.cs
- DeobfuscatingStream.cs
- ControlUtil.cs
- TextBreakpoint.cs
- MessageQueuePermissionAttribute.cs
- ADConnectionHelper.cs
- RijndaelCryptoServiceProvider.cs
- MarkupObject.cs
- ListItemViewAttribute.cs
- DynamicDiscoveryDocument.cs
- TypedRowHandler.cs
- OutArgument.cs
- CryptographicAttribute.cs
- XmlSchemaDocumentation.cs
- DbParameterHelper.cs
- HeaderedItemsControl.cs
- ComponentEditorPage.cs
- CompatibleIComparer.cs
- HostVisual.cs
- CompilerParameters.cs
- FunctionParameter.cs
- MsmqChannelListenerBase.cs
- DelegatingTypeDescriptionProvider.cs
- EDesignUtil.cs
- HttpChannelBindingToken.cs
- IResourceProvider.cs
- CorrelationKeyCalculator.cs
- ExceptionValidationRule.cs
- OverflowException.cs
- GZipStream.cs
- BlobPersonalizationState.cs
- RectangleF.cs
- MsmqSecureHashAlgorithm.cs
- RightsManagementInformation.cs
- SkewTransform.cs
- EdmError.cs
- XmlWellformedWriter.cs
- PagesChangedEventArgs.cs
- XmlUrlResolver.cs
- CLSCompliantAttribute.cs
- MemberHolder.cs
- RegexWorker.cs
- Win32.cs
- ContextBase.cs
- Roles.cs
- URLAttribute.cs
- CreatingCookieEventArgs.cs
- StoryFragments.cs
- PackageDigitalSignature.cs
- webbrowsersite.cs
- KeyValueConfigurationCollection.cs
- TransformDescriptor.cs
- HtmlInputCheckBox.cs
- LogSwitch.cs
- Decoder.cs
- SplayTreeNode.cs
- PageWrapper.cs
- EntityConnectionStringBuilder.cs
- ServiceHost.cs
- Form.cs
- StringToken.cs
- XPathNavigator.cs
- WmlTextViewAdapter.cs
- DataRelationCollection.cs
- SystemNetHelpers.cs
- Misc.cs
- ModelTreeEnumerator.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- HashHelper.cs
- ListViewCancelEventArgs.cs
- EntityContainer.cs
- CodeNamespaceImport.cs
- Point3DConverter.cs
- ToolStripRenderEventArgs.cs
- ToolStripManager.cs
- ExtendedPropertyInfo.cs
- CodeCommentStatementCollection.cs
- IPAddressCollection.cs