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
- DeferredTextReference.cs
- ComponentChangedEvent.cs
- XmlLoader.cs
- DesignTimeTemplateParser.cs
- ClientProxyGenerator.cs
- input.cs
- BinaryObjectReader.cs
- UserControl.cs
- PropertyInformationCollection.cs
- StylusCollection.cs
- PeerResolverBindingElement.cs
- ActiveDocumentEvent.cs
- SessionViewState.cs
- DesignerTransactionCloseEvent.cs
- Opcode.cs
- DoWorkEventArgs.cs
- SerializerDescriptor.cs
- TriggerBase.cs
- Pair.cs
- SchemaTableOptionalColumn.cs
- ReadOnlyMetadataCollection.cs
- SchemaImporterExtension.cs
- PageCache.cs
- ExtentKey.cs
- ZoneIdentityPermission.cs
- PenContexts.cs
- Profiler.cs
- CachedRequestParams.cs
- Crc32.cs
- GenericTypeParameterBuilder.cs
- MetadataArtifactLoaderCompositeFile.cs
- GridViewCommandEventArgs.cs
- CustomLineCap.cs
- ServicePointManagerElement.cs
- BasePattern.cs
- SecurityDescriptor.cs
- Command.cs
- DataGridRowAutomationPeer.cs
- RawContentTypeMapper.cs
- ReadOnlyPropertyMetadata.cs
- SHA1CryptoServiceProvider.cs
- WebPageTraceListener.cs
- HttpRequestCacheValidator.cs
- CardSpaceException.cs
- SafeCryptContextHandle.cs
- OptimizedTemplateContentHelper.cs
- SqlTypeSystemProvider.cs
- AddInPipelineAttributes.cs
- SQLInt64Storage.cs
- XmlSchemaAnyAttribute.cs
- FilteredReadOnlyMetadataCollection.cs
- RequestContext.cs
- ResourceProperty.cs
- XpsFilter.cs
- ClientSettingsSection.cs
- XmlSchemaSimpleContentExtension.cs
- MemberProjectedSlot.cs
- Identity.cs
- PreviewPageInfo.cs
- DrawingContextDrawingContextWalker.cs
- TableCell.cs
- CreateUserWizard.cs
- DirectionalLight.cs
- PeerTransportListenAddressValidatorAttribute.cs
- AppDomainUnloadedException.cs
- AdapterDictionary.cs
- TraceContext.cs
- EntryPointNotFoundException.cs
- DynamicEntity.cs
- PenCursorManager.cs
- SoapExtensionTypeElementCollection.cs
- DocumentGrid.cs
- Polyline.cs
- X509Certificate2Collection.cs
- Int64AnimationUsingKeyFrames.cs
- StringDictionaryWithComparer.cs
- TabRenderer.cs
- EmissiveMaterial.cs
- IdentityManager.cs
- RepeatInfo.cs
- StrokeCollectionConverter.cs
- ServiceObjectContainer.cs
- EmptyElement.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- PathGeometry.cs
- SecurityContext.cs
- BitmapEffectState.cs
- DoubleConverter.cs
- PersonalizationProviderCollection.cs
- sqlnorm.cs
- NameValueFileSectionHandler.cs
- PageClientProxyGenerator.cs
- WsdlHelpGeneratorElement.cs
- UIElementHelper.cs
- HtmlCalendarAdapter.cs
- CachedBitmap.cs
- AttachedAnnotationChangedEventArgs.cs
- StrongName.cs
- HostingPreferredMapPath.cs
- MouseEvent.cs