Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Recognition / SrgsGrammar / SrgsGrammarCompiler.cs / 1 / SrgsGrammarCompiler.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description:
//
// History:
// 6/1/2004 jeanfp
//---------------------------------------------------------------------------
using System;
using System.IO;
using System.Xml;
using System.Speech.Internal;
using System.Speech.Internal.SrgsCompiler;
namespace System.Speech.Recognition.SrgsGrammar
{
///
/// Compiles Xml Srgs data into a CFG
///
public static class SrgsGrammarCompiler
{
//*******************************************************************
//
// Public Methods
//
//*******************************************************************
#region Public Methods
///
/// Compiles a grammar to a file
///
///
///
static public void Compile (string inputPath, Stream outputStream)
{
Helpers.ThrowIfEmptyOrNull (inputPath, "inputPath");
Helpers.ThrowIfNull (outputStream, "outputStream");
using (XmlTextReader reader = new XmlTextReader (new Uri (inputPath, UriKind.RelativeOrAbsolute).ToString ()))
{
SrgsCompiler.CompileStream (new XmlReader [] { reader }, null, outputStream, true, null, null, null);
}
}
///
/// Compiles an Srgs documentto a file
///
///
///
static public void Compile (SrgsDocument srgsGrammar, Stream outputStream)
{
Helpers.ThrowIfNull (srgsGrammar, "srgsGrammar");
Helpers.ThrowIfNull (outputStream, "outputStream");
SrgsCompiler.CompileStream (srgsGrammar, null, outputStream, true, null, null);
}
///
/// Compiles a grammar to a file
///
///
///
static public void Compile (XmlReader reader, Stream outputStream)
{
Helpers.ThrowIfNull (reader, "reader");
Helpers.ThrowIfNull (outputStream, "outputStream");
SrgsCompiler.CompileStream (new XmlReader [] { reader }, null, outputStream, true, null, null, null);
}
#if !NO_STG
///
/// Compiles a grammar to a file
///
///
///
///
///
static public void CompileClassLibrary (string [] inputPaths, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (inputPaths, "inputPaths");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
XmlTextReader [] readers = new XmlTextReader [inputPaths.Length];
try
{
for (int iFile = 0; iFile < inputPaths.Length; iFile++)
{
if (inputPaths [iFile] == null)
{
throw new ArgumentException (SR.Get (SRID.ArrayOfNullIllegal), "inputPaths");
}
readers [iFile] = new XmlTextReader (new Uri (inputPaths [iFile], UriKind.RelativeOrAbsolute).ToString ());
}
SrgsCompiler.CompileStream (readers, outputPath, null, false, null, referencedAssemblies, keyFile);
}
finally
{
for (int iReader = 0; iReader < readers.Length; iReader++)
{
XmlTextReader srgsGrammar = readers [iReader];
if (srgsGrammar != null)
{
((IDisposable) srgsGrammar).Dispose ();
}
}
}
}
///
/// Compiles an Srgs documentto a file
///
///
///
///
///
static public void CompileClassLibrary (SrgsDocument srgsGrammar, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (srgsGrammar, "srgsGrammar");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
SrgsCompiler.CompileStream (srgsGrammar, outputPath, null, false, referencedAssemblies, keyFile);
}
///
/// Compiles a grammar to a file
///
///
///
///
///
static public void CompileClassLibrary (XmlReader reader, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (reader, "reader");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
SrgsCompiler.CompileStream (new XmlReader [] { reader }, outputPath, null, false, null, referencedAssemblies, keyFile);
}
#endif
#endregion
//********************************************************************
//
// Internal Methods
//
//*******************************************************************
#region Internal Methods
// Decide if the input stream is a cfg.
// If not assume it's an xml grammar.
// The stream parameter points to the start of the data on entry and is reset to that point on exit.
static private bool CheckIfCfg (Stream stream, out int cfgLength)
{
long initialPosition = stream.Position;
bool isCfg = CfgGrammar.CfgSerializedHeader.IsCfg (stream, out cfgLength);
// Reset stream position:
stream.Position = initialPosition;
return isCfg;
}
static internal void CompileXmlOrCopyCfg (
Stream inputStream,
Stream outputStream,
Uri orginalUri)
{
// Wrap stream in case Seek is not supported:
SeekableReadStream seekableInputStream = new SeekableReadStream (inputStream);
// See if CFG or XML document:
int cfgLength;
bool isCFG = CheckIfCfg (seekableInputStream, out cfgLength);
seekableInputStream.CacheDataForSeeking = false; // Stop buffering data
if (isCFG)
{
// Just copy the input to the output:
// {We later check the header on the output stream - we could do it on the input stream but it may not be seekable}.
Helpers.CopyStream (seekableInputStream, outputStream, cfgLength);
}
else
{
// Else compile the Xml:
SrgsCompiler.CompileStream (new XmlReader [] { new XmlTextReader (seekableInputStream) }, null, outputStream, true, orginalUri, null, null);
}
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description:
//
// History:
// 6/1/2004 jeanfp
//---------------------------------------------------------------------------
using System;
using System.IO;
using System.Xml;
using System.Speech.Internal;
using System.Speech.Internal.SrgsCompiler;
namespace System.Speech.Recognition.SrgsGrammar
{
///
/// Compiles Xml Srgs data into a CFG
///
public static class SrgsGrammarCompiler
{
//*******************************************************************
//
// Public Methods
//
//*******************************************************************
#region Public Methods
///
/// Compiles a grammar to a file
///
///
///
static public void Compile (string inputPath, Stream outputStream)
{
Helpers.ThrowIfEmptyOrNull (inputPath, "inputPath");
Helpers.ThrowIfNull (outputStream, "outputStream");
using (XmlTextReader reader = new XmlTextReader (new Uri (inputPath, UriKind.RelativeOrAbsolute).ToString ()))
{
SrgsCompiler.CompileStream (new XmlReader [] { reader }, null, outputStream, true, null, null, null);
}
}
///
/// Compiles an Srgs documentto a file
///
///
///
static public void Compile (SrgsDocument srgsGrammar, Stream outputStream)
{
Helpers.ThrowIfNull (srgsGrammar, "srgsGrammar");
Helpers.ThrowIfNull (outputStream, "outputStream");
SrgsCompiler.CompileStream (srgsGrammar, null, outputStream, true, null, null);
}
///
/// Compiles a grammar to a file
///
///
///
static public void Compile (XmlReader reader, Stream outputStream)
{
Helpers.ThrowIfNull (reader, "reader");
Helpers.ThrowIfNull (outputStream, "outputStream");
SrgsCompiler.CompileStream (new XmlReader [] { reader }, null, outputStream, true, null, null, null);
}
#if !NO_STG
///
/// Compiles a grammar to a file
///
///
///
///
///
static public void CompileClassLibrary (string [] inputPaths, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (inputPaths, "inputPaths");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
XmlTextReader [] readers = new XmlTextReader [inputPaths.Length];
try
{
for (int iFile = 0; iFile < inputPaths.Length; iFile++)
{
if (inputPaths [iFile] == null)
{
throw new ArgumentException (SR.Get (SRID.ArrayOfNullIllegal), "inputPaths");
}
readers [iFile] = new XmlTextReader (new Uri (inputPaths [iFile], UriKind.RelativeOrAbsolute).ToString ());
}
SrgsCompiler.CompileStream (readers, outputPath, null, false, null, referencedAssemblies, keyFile);
}
finally
{
for (int iReader = 0; iReader < readers.Length; iReader++)
{
XmlTextReader srgsGrammar = readers [iReader];
if (srgsGrammar != null)
{
((IDisposable) srgsGrammar).Dispose ();
}
}
}
}
///
/// Compiles an Srgs documentto a file
///
///
///
///
///
static public void CompileClassLibrary (SrgsDocument srgsGrammar, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (srgsGrammar, "srgsGrammar");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
SrgsCompiler.CompileStream (srgsGrammar, outputPath, null, false, referencedAssemblies, keyFile);
}
///
/// Compiles a grammar to a file
///
///
///
///
///
static public void CompileClassLibrary (XmlReader reader, string outputPath, string [] referencedAssemblies, string keyFile)
{
Helpers.ThrowIfNull (reader, "reader");
Helpers.ThrowIfEmptyOrNull (outputPath, "outputPath");
SrgsCompiler.CompileStream (new XmlReader [] { reader }, outputPath, null, false, null, referencedAssemblies, keyFile);
}
#endif
#endregion
//********************************************************************
//
// Internal Methods
//
//*******************************************************************
#region Internal Methods
// Decide if the input stream is a cfg.
// If not assume it's an xml grammar.
// The stream parameter points to the start of the data on entry and is reset to that point on exit.
static private bool CheckIfCfg (Stream stream, out int cfgLength)
{
long initialPosition = stream.Position;
bool isCfg = CfgGrammar.CfgSerializedHeader.IsCfg (stream, out cfgLength);
// Reset stream position:
stream.Position = initialPosition;
return isCfg;
}
static internal void CompileXmlOrCopyCfg (
Stream inputStream,
Stream outputStream,
Uri orginalUri)
{
// Wrap stream in case Seek is not supported:
SeekableReadStream seekableInputStream = new SeekableReadStream (inputStream);
// See if CFG or XML document:
int cfgLength;
bool isCFG = CheckIfCfg (seekableInputStream, out cfgLength);
seekableInputStream.CacheDataForSeeking = false; // Stop buffering data
if (isCFG)
{
// Just copy the input to the output:
// {We later check the header on the output stream - we could do it on the input stream but it may not be seekable}.
Helpers.CopyStream (seekableInputStream, outputStream, cfgLength);
}
else
{
// Else compile the Xml:
SrgsCompiler.CompileStream (new XmlReader [] { new XmlTextReader (seekableInputStream) }, null, outputStream, true, orginalUri, null, null);
}
}
#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
- FormCollection.cs
- WebPartConnectVerb.cs
- GeneralTransform3DGroup.cs
- DrawListViewSubItemEventArgs.cs
- FormParameter.cs
- HttpCapabilitiesSectionHandler.cs
- GorillaCodec.cs
- PropertyChange.cs
- DriveNotFoundException.cs
- Path.cs
- CodeParameterDeclarationExpression.cs
- TaiwanLunisolarCalendar.cs
- TypeSemantics.cs
- NamespaceInfo.cs
- ErrorFormatterPage.cs
- CircleHotSpot.cs
- PeerReferralPolicy.cs
- ToolStripDropDownClosingEventArgs.cs
- LingerOption.cs
- StrongNameMembershipCondition.cs
- ValidationSummary.cs
- PrePrepareMethodAttribute.cs
- SimpleBitVector32.cs
- VariantWrapper.cs
- DesignerSerializationVisibilityAttribute.cs
- ContextStack.cs
- BookmarkScopeInfo.cs
- InvokePattern.cs
- WebHttpSecurityModeHelper.cs
- WinInet.cs
- ConstructorArgumentAttribute.cs
- DbConnectionPoolGroupProviderInfo.cs
- HandledEventArgs.cs
- ScrollItemProviderWrapper.cs
- SrgsToken.cs
- RepeaterItem.cs
- ScriptMethodAttribute.cs
- CharEntityEncoderFallback.cs
- BrowserDefinition.cs
- HeaderedItemsControl.cs
- FontUnitConverter.cs
- PackWebRequest.cs
- ClientProxyGenerator.cs
- ConfigurationSettings.cs
- GeometryValueSerializer.cs
- DocumentXmlWriter.cs
- ToolStripItemClickedEventArgs.cs
- DBSqlParserColumnCollection.cs
- GlyphingCache.cs
- FontConverter.cs
- DiscoveryVersionConverter.cs
- QuaternionRotation3D.cs
- XmlObjectSerializerWriteContextComplex.cs
- ObjectDataSourceDisposingEventArgs.cs
- ResponseStream.cs
- ReaderContextStackData.cs
- XmlDictionaryReader.cs
- DateTimeConstantAttribute.cs
- MenuItemStyleCollection.cs
- mediapermission.cs
- datacache.cs
- SqlDataSourceDesigner.cs
- MaxValueConverter.cs
- Misc.cs
- Psha1DerivedKeyGenerator.cs
- MembershipUser.cs
- BufferModeSettings.cs
- ReadOnlyDictionary.cs
- TableParagraph.cs
- ComboBoxItem.cs
- ClipboardProcessor.cs
- TraceUtility.cs
- XsltQilFactory.cs
- connectionpool.cs
- JpegBitmapEncoder.cs
- PenThreadPool.cs
- SQLMembershipProvider.cs
- MetadataUtil.cs
- XmlDataFileEditor.cs
- Lasso.cs
- DecodeHelper.cs
- PauseStoryboard.cs
- UInt64Storage.cs
- ArgumentNullException.cs
- NativeMethods.cs
- NonBatchDirectoryCompiler.cs
- CodeDOMProvider.cs
- ChunkedMemoryStream.cs
- CroppedBitmap.cs
- XmlRootAttribute.cs
- Debug.cs
- AxisAngleRotation3D.cs
- DirectoryInfo.cs
- XmlAggregates.cs
- _IPv6Address.cs
- GridView.cs
- XComponentModel.cs
- LockCookie.cs
- EventLogLink.cs
- DrawingAttributesDefaultValueFactory.cs