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
- SafeIUnknown.cs
- TreeView.cs
- AlignmentXValidation.cs
- VerificationAttribute.cs
- _AutoWebProxyScriptEngine.cs
- DisableDpiAwarenessAttribute.cs
- Mapping.cs
- ItemCollection.cs
- SqlProviderManifest.cs
- Memoizer.cs
- OletxTransactionManager.cs
- PreservationFileWriter.cs
- PresentationTraceSources.cs
- XamlFxTrace.cs
- AnnotationHelper.cs
- ScrollBarRenderer.cs
- TextSpan.cs
- StorageEntityTypeMapping.cs
- CatalogPartCollection.cs
- CollectionExtensions.cs
- QuaternionRotation3D.cs
- MetadataSerializer.cs
- InvokePatternIdentifiers.cs
- SHA384Cng.cs
- FunctionDescription.cs
- BuildResult.cs
- AccessKeyManager.cs
- SqlRecordBuffer.cs
- Compensate.cs
- SqlParameterCollection.cs
- ToolStripItemImageRenderEventArgs.cs
- SecurityVersion.cs
- ControlBuilder.cs
- SiteMapSection.cs
- ValueConversionAttribute.cs
- TypeGeneratedEventArgs.cs
- WebZone.cs
- MenuCommands.cs
- CollectionsUtil.cs
- DebuggerAttributes.cs
- EnumDataContract.cs
- DataGridColumn.cs
- ThrowHelper.cs
- DashStyle.cs
- ConstantSlot.cs
- BlockCollection.cs
- TextBoxAutomationPeer.cs
- EntityDesignPluralizationHandler.cs
- AutomationProperties.cs
- ClientSettingsSection.cs
- QueryPrefixOp.cs
- PageCache.cs
- Utils.cs
- EdmItemError.cs
- DesignerValidatorAdapter.cs
- HttpDigestClientElement.cs
- PassportIdentity.cs
- WorkflowTraceTransfer.cs
- ActiveDocumentEvent.cs
- ToolStripLabel.cs
- EntityCommandExecutionException.cs
- ListenerUnsafeNativeMethods.cs
- DisableDpiAwarenessAttribute.cs
- NumberFunctions.cs
- CancelEventArgs.cs
- Cell.cs
- DropDownList.cs
- AllowedAudienceUriElement.cs
- Rotation3D.cs
- CrossAppDomainChannel.cs
- ColumnClickEvent.cs
- TemplateComponentConnector.cs
- DataGridCell.cs
- IRCollection.cs
- UndoEngine.cs
- ConstructorNeedsTagAttribute.cs
- DupHandleConnectionReader.cs
- ConsoleCancelEventArgs.cs
- TargetControlTypeCache.cs
- IsolatedStoragePermission.cs
- XpsSerializerFactory.cs
- ExceptionValidationRule.cs
- ItemList.cs
- DefaultExpressionVisitor.cs
- RecognizedWordUnit.cs
- XmlSchemaSimpleType.cs
- PromptStyle.cs
- FontInfo.cs
- SiteMapDataSourceView.cs
- TimeEnumHelper.cs
- EncryptedPackage.cs
- BamlCollectionHolder.cs
- XmlAtomErrorReader.cs
- RowUpdatingEventArgs.cs
- TextEndOfParagraph.cs
- ServiceModelReg.cs
- ConfigurationManagerInternal.cs
- WizardSideBarListControlItem.cs
- AtomServiceDocumentSerializer.cs
- TableCellsCollectionEditor.cs