Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / 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. // //----------------------------------------------------------------- #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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XsltSettings.cs
- TextServicesProperty.cs
- VectorCollectionConverter.cs
- SmtpAuthenticationManager.cs
- AssemblyAttributes.cs
- SchemaImporterExtensionsSection.cs
- MobileControlDesigner.cs
- PagesChangedEventArgs.cs
- BaseTemplateBuildProvider.cs
- DiagnosticTrace.cs
- BuildProvider.cs
- HtmlControlAdapter.cs
- TimeSpanMinutesConverter.cs
- WebPartCollection.cs
- CodeTypeReference.cs
- Byte.cs
- SqlDataSourceView.cs
- DataGridViewComboBoxCell.cs
- CatalogPart.cs
- DetailsViewCommandEventArgs.cs
- BitmapEffectGeneralTransform.cs
- Util.cs
- DataGridViewColumnEventArgs.cs
- SchemaImporterExtensionsSection.cs
- EntityDataSource.cs
- FontCollection.cs
- XmlDictionaryReader.cs
- XmlQueryStaticData.cs
- RootAction.cs
- PartialTrustHelpers.cs
- DesignerUtils.cs
- PointCollectionConverter.cs
- RoutedCommand.cs
- XsdValidatingReader.cs
- TextDpi.cs
- InputMethod.cs
- TextMessageEncodingElement.cs
- ProxyAttribute.cs
- ObsoleteAttribute.cs
- AddInBase.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- WorkflowQueueInfo.cs
- ByteRangeDownloader.cs
- UserNamePasswordValidator.cs
- CredentialCache.cs
- UIPermission.cs
- InternalDispatchObject.cs
- SchemaAttDef.cs
- ConstantExpression.cs
- TypeForwardedToAttribute.cs
- RegexCode.cs
- WindowsAuthenticationModule.cs
- BackgroundWorker.cs
- ParameterSubsegment.cs
- ListItem.cs
- HtmlInputButton.cs
- Int32KeyFrameCollection.cs
- DPTypeDescriptorContext.cs
- StorageEntitySetMapping.cs
- SizeAnimation.cs
- ControlBindingsCollection.cs
- ellipse.cs
- AutomationTextAttribute.cs
- TextureBrush.cs
- ComponentEditorPage.cs
- TraceListener.cs
- DataGridSortCommandEventArgs.cs
- IdentityNotMappedException.cs
- SQLDoubleStorage.cs
- JsonQNameDataContract.cs
- Application.cs
- URL.cs
- WebPartConnectionsConfigureVerb.cs
- ReadOnlyDataSource.cs
- OperatingSystem.cs
- _NegoState.cs
- DataGridViewRowsAddedEventArgs.cs
- ConfigXmlAttribute.cs
- ResourceDescriptionAttribute.cs
- PaintEvent.cs
- ConstraintManager.cs
- FormViewPageEventArgs.cs
- Rotation3DAnimationBase.cs
- RNGCryptoServiceProvider.cs
- ChtmlTextWriter.cs
- WebPartCatalogCloseVerb.cs
- SqlParameterCollection.cs
- Vertex.cs
- MediaTimeline.cs
- MarkupWriter.cs
- OpCellTreeNode.cs
- TextServicesManager.cs
- BaseComponentEditor.cs
- CompositionAdorner.cs
- MenuAdapter.cs
- AspProxy.cs
- StaticTextPointer.cs
- PropertySourceInfo.cs
- SoapParser.cs
- DecimalAnimation.cs