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
- DataSourceControl.cs
- DBSqlParserTableCollection.cs
- DBPropSet.cs
- ViewKeyConstraint.cs
- SafeHandles.cs
- VoiceInfo.cs
- ObjectFullSpanRewriter.cs
- RadioButton.cs
- NativeRightsManagementAPIsStructures.cs
- Decorator.cs
- RichListBox.cs
- EventHandlerList.cs
- EnterpriseServicesHelper.cs
- ContractReference.cs
- TaskForm.cs
- ObjectPersistData.cs
- TypeNameConverter.cs
- DataGridViewSelectedCellCollection.cs
- SiteMapPath.cs
- Hyperlink.cs
- AutoGeneratedField.cs
- XmlSchemaInferenceException.cs
- EUCJPEncoding.cs
- MatrixStack.cs
- DataGridViewDataErrorEventArgs.cs
- DesignerResources.cs
- ObjectItemCachedAssemblyLoader.cs
- XmlException.cs
- HyperLinkStyle.cs
- SerTrace.cs
- cookiecontainer.cs
- EqualityComparer.cs
- ScriptResourceHandler.cs
- BindingValueChangedEventArgs.cs
- StrokeRenderer.cs
- LinqMaximalSubtreeNominator.cs
- _Connection.cs
- ProxyHwnd.cs
- DbParameterCollectionHelper.cs
- RayHitTestParameters.cs
- AddInStore.cs
- FunctionImportMapping.cs
- SettingsPropertyCollection.cs
- peersecuritysettings.cs
- TypeConstant.cs
- HashCodeCombiner.cs
- TriState.cs
- CharacterHit.cs
- ConfigXmlText.cs
- TableAdapterManagerNameHandler.cs
- DataServiceCollectionOfT.cs
- PropertyKey.cs
- OdbcCommand.cs
- AttributeCollection.cs
- PrintPreviewDialog.cs
- XPathScanner.cs
- CodeSnippetCompileUnit.cs
- AccessDataSourceView.cs
- ScrollContentPresenter.cs
- _LocalDataStoreMgr.cs
- Stylus.cs
- HttpFileCollectionWrapper.cs
- EncoderBestFitFallback.cs
- DataServiceException.cs
- CodeDirectionExpression.cs
- SiteMapProvider.cs
- CurrencyWrapper.cs
- InstanceKeyNotReadyException.cs
- StrokeFIndices.cs
- CodeDomSerializerException.cs
- PathStreamGeometryContext.cs
- ReferenceSchema.cs
- ClientScriptItem.cs
- SqlCachedBuffer.cs
- XmlDataCollection.cs
- SmtpDateTime.cs
- ProxyWebPartManager.cs
- IdentitySection.cs
- WsatConfiguration.cs
- ComponentEditorForm.cs
- RequestQueue.cs
- EntityDesignPluralizationHandler.cs
- COM2ExtendedTypeConverter.cs
- glyphs.cs
- ResourceDisplayNameAttribute.cs
- FloatAverageAggregationOperator.cs
- DataGridViewAddColumnDialog.cs
- SqlXmlStorage.cs
- SafeNativeMethods.cs
- ByteAnimationBase.cs
- KoreanCalendar.cs
- XamlGridLengthSerializer.cs
- IISUnsafeMethods.cs
- DynamicQueryableWrapper.cs
- ToolStripSeparatorRenderEventArgs.cs
- TextPointerBase.cs
- PassportAuthenticationModule.cs
- DataSourceSelectArguments.cs
- VariableBinder.cs
- WinFormsUtils.cs