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
- TypeForwardedToAttribute.cs
- XDRSchema.cs
- Console.cs
- SamlNameIdentifierClaimResource.cs
- InputLangChangeEvent.cs
- BitmapSource.cs
- WasAdminWrapper.cs
- MdiWindowListStrip.cs
- BuilderInfo.cs
- SafeNativeMethods.cs
- DataGridViewColumnHeaderCell.cs
- SymLanguageType.cs
- OpenTypeLayoutCache.cs
- DrawingGroup.cs
- SessionPageStateSection.cs
- EntityCommandCompilationException.cs
- MenuItemBindingCollection.cs
- SplitContainer.cs
- ObjectStateManagerMetadata.cs
- ListViewItem.cs
- XmlSerializerNamespaces.cs
- LiteralSubsegment.cs
- EmptyStringExpandableObjectConverter.cs
- ClosureBinding.cs
- FlowDocumentReaderAutomationPeer.cs
- MULTI_QI.cs
- SoapExtensionTypeElement.cs
- ClientConfigPaths.cs
- DataRecordInfo.cs
- DataGridViewSelectedColumnCollection.cs
- TreeNode.cs
- WebPartsPersonalization.cs
- XmlDeclaration.cs
- CacheEntry.cs
- EncoderParameters.cs
- KeyedCollection.cs
- CodeEntryPointMethod.cs
- SqlInternalConnectionSmi.cs
- HtmlButton.cs
- FtpWebRequest.cs
- SqlNotificationEventArgs.cs
- entityreference_tresulttype.cs
- diagnosticsswitches.cs
- __Filters.cs
- DynamicMethod.cs
- NamespaceEmitter.cs
- ActivityInterfaces.cs
- ExtendedPropertyDescriptor.cs
- FrameSecurityDescriptor.cs
- IgnoreSection.cs
- Set.cs
- AutomationPropertyInfo.cs
- EventListenerClientSide.cs
- ChangeConflicts.cs
- Propagator.Evaluator.cs
- RectangleGeometry.cs
- Stacktrace.cs
- PropVariant.cs
- TextRangeBase.cs
- iisPickupDirectory.cs
- OneOfTypeConst.cs
- DataGridViewLinkCell.cs
- TrustManagerMoreInformation.cs
- StreamAsIStream.cs
- PieceDirectory.cs
- StateMachineWorkflow.cs
- MarshalByValueComponent.cs
- RightsManagementPermission.cs
- StylusPointPropertyId.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ControlType.cs
- JsonReader.cs
- EpmSyndicationContentDeSerializer.cs
- ItemsChangedEventArgs.cs
- MouseButtonEventArgs.cs
- DependencyObjectType.cs
- LinearQuaternionKeyFrame.cs
- ObjectDataSourceSelectingEventArgs.cs
- PrintEvent.cs
- Messages.cs
- WindowsListViewItemStartMenu.cs
- Span.cs
- MemberAccessException.cs
- BamlLocalizableResource.cs
- MessageBox.cs
- WebRequestModulesSection.cs
- AttachedAnnotation.cs
- WinInetCache.cs
- WindowsPen.cs
- PointCollection.cs
- Msec.cs
- AutoResetEvent.cs
- XmlSiteMapProvider.cs
- SamlAdvice.cs
- ByteStorage.cs
- HttpCookieCollection.cs
- SchemeSettingElementCollection.cs
- DataGridViewCellEventArgs.cs
- DesignerGenericWebPart.cs
- PostBackOptions.cs