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
- PathSegment.cs
- RsaElement.cs
- SharedDp.cs
- KeyInfo.cs
- ZipIOFileItemStream.cs
- ExtendedProtectionPolicy.cs
- DbModificationCommandTree.cs
- OperationFormatUse.cs
- XmlDataProvider.cs
- SqlProfileProvider.cs
- CodeParameterDeclarationExpressionCollection.cs
- Base64Stream.cs
- SqlInfoMessageEvent.cs
- InvariantComparer.cs
- ReplyAdapterChannelListener.cs
- BaseValidator.cs
- FileFormatException.cs
- IdentityModelDictionary.cs
- GridItem.cs
- TextSelectionProcessor.cs
- SerializationInfoEnumerator.cs
- TreeNodeSelectionProcessor.cs
- InputLanguageCollection.cs
- BuildProviderAppliesToAttribute.cs
- Matrix3DValueSerializer.cs
- ManifestSignedXml.cs
- ReflectionUtil.cs
- DocumentsTrace.cs
- PersonalizableTypeEntry.cs
- SchemaMapping.cs
- FigureParagraph.cs
- DBSqlParserColumn.cs
- NavigationProgressEventArgs.cs
- TransactionOptions.cs
- ExecutedRoutedEventArgs.cs
- PagesChangedEventArgs.cs
- MediaSystem.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- Timer.cs
- SystemWebCachingSectionGroup.cs
- TreePrinter.cs
- XsdDuration.cs
- Intellisense.cs
- TracePayload.cs
- X509Certificate2.cs
- OraclePermission.cs
- HttpsHostedTransportConfiguration.cs
- Native.cs
- FrameworkRichTextComposition.cs
- AsyncPostBackErrorEventArgs.cs
- DashStyles.cs
- GlyphInfoList.cs
- MarshalDirectiveException.cs
- MessageDispatch.cs
- TextTreeText.cs
- RepeaterItem.cs
- VsPropertyGrid.cs
- ColorConverter.cs
- GlyphElement.cs
- HuffCodec.cs
- Knowncolors.cs
- DbConnectionInternal.cs
- CompressedStack.cs
- PropertyTabAttribute.cs
- SystemIPInterfaceStatistics.cs
- QueryContinueDragEventArgs.cs
- BindingsCollection.cs
- DesignerSelectionListAdapter.cs
- SystemIPInterfaceStatistics.cs
- X509Extension.cs
- EpmSyndicationContentSerializer.cs
- Menu.cs
- SHA384Managed.cs
- FeatureSupport.cs
- SelectorAutomationPeer.cs
- AuthenticationModuleElementCollection.cs
- MessageBox.cs
- WindowsSpinner.cs
- WSTrustDec2005.cs
- LinqDataSourceInsertEventArgs.cs
- ValidatingCollection.cs
- InternalConfigRoot.cs
- ButtonFieldBase.cs
- BrowserDefinitionCollection.cs
- TextViewSelectionProcessor.cs
- BindingsSection.cs
- ServiceEndpointCollection.cs
- ModifierKeysValueSerializer.cs
- ReturnEventArgs.cs
- RectAnimationBase.cs
- TranslateTransform.cs
- AdornerPresentationContext.cs
- DateTimeFormatInfoScanner.cs
- ParserStreamGeometryContext.cs
- ElasticEase.cs
- WebBrowserDesigner.cs
- NativeCompoundFileAPIs.cs
- ListViewCancelEventArgs.cs
- ConfigurationValidatorAttribute.cs
- EventArgs.cs