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
- IsolatedStorageException.cs
- util.cs
- BroadcastEventHelper.cs
- SelectionPattern.cs
- PageVisual.cs
- ScanQueryOperator.cs
- Calendar.cs
- RbTree.cs
- FlowDocumentReader.cs
- BinaryNode.cs
- PermissionAttributes.cs
- DuplicateWaitObjectException.cs
- EnumerableCollectionView.cs
- CircleHotSpot.cs
- TableParagraph.cs
- SimplePropertyEntry.cs
- InvalidateEvent.cs
- SymmetricCryptoHandle.cs
- SchemaConstraints.cs
- HttpHeaderCollection.cs
- HtmlButton.cs
- TableLayoutSettingsTypeConverter.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- MouseWheelEventArgs.cs
- UrlPath.cs
- SectionRecord.cs
- GestureRecognizer.cs
- InputMethodStateTypeInfo.cs
- Single.cs
- ObjectReferenceStack.cs
- _Semaphore.cs
- ProfilePropertySettingsCollection.cs
- LinkConverter.cs
- DefaultBindingPropertyAttribute.cs
- DataChangedEventManager.cs
- MenuItemCollectionEditorDialog.cs
- TrackPointCollection.cs
- TextRangeSerialization.cs
- RoutedCommand.cs
- Crc32.cs
- EventRoute.cs
- TimeEnumHelper.cs
- TargetParameterCountException.cs
- PlanCompilerUtil.cs
- ProfilePropertySettings.cs
- AmbientLight.cs
- PreservationFileWriter.cs
- DataFormats.cs
- LinqDataSourceHelper.cs
- ToolStrip.cs
- ItemsChangedEventArgs.cs
- ColorKeyFrameCollection.cs
- XPathAxisIterator.cs
- DemultiplexingClientMessageFormatter.cs
- AssemblyBuilder.cs
- Stack.cs
- sqlinternaltransaction.cs
- TargetControlTypeAttribute.cs
- AsyncOperationManager.cs
- Storyboard.cs
- ImpersonateTokenRef.cs
- FindRequestContext.cs
- StreamUpgradeInitiator.cs
- Light.cs
- ColorBuilder.cs
- SingleConverter.cs
- PersonalizationStateQuery.cs
- LazyTextWriterCreator.cs
- QueryCacheKey.cs
- Item.cs
- TableLayoutStyleCollection.cs
- validation.cs
- TextureBrush.cs
- NativeMethods.cs
- HttpWriter.cs
- DoubleLink.cs
- SystemFonts.cs
- HelloOperationCD1AsyncResult.cs
- FileLogRecordHeader.cs
- ComponentEditorForm.cs
- DataGridViewTextBoxColumn.cs
- SerialErrors.cs
- precedingquery.cs
- DependencyPropertyAttribute.cs
- FormViewUpdatedEventArgs.cs
- TCEAdapterGenerator.cs
- DesignerObjectListAdapter.cs
- AllMembershipCondition.cs
- SmtpCommands.cs
- Stackframe.cs
- QueryAsyncResult.cs
- ZipIOExtraField.cs
- LineSegment.cs
- InkCanvasSelection.cs
- Enlistment.cs
- DBCommandBuilder.cs
- ConnectionInterfaceCollection.cs
- RemotingConfigParser.cs
- ErrorFormatterPage.cs
- Renderer.cs