Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / Helpers.cs / 1 / Helpers.cs
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------
using System;
using System.IO;
using System.Globalization;
#pragma warning disable 1634, 1691 // Allows suppression of certain PreSharp messages.
namespace System.Speech.Internal
{
internal static class Helpers
{
//*******************************************************************
//
// Internal Methods
//
//*******************************************************************
#region Internal Methods
// Disable parameter validation check
#pragma warning disable 56507
// Throws exception if the specified Rule does not have a valid Id.
static internal void ThrowIfEmptyOrNull (string s, string paramName)
{
if (string.IsNullOrEmpty (s))
{
if (s == null)
{
throw new ArgumentNullException (paramName);
}
else
{
throw new ArgumentException (SR.Get (SRID.StringCanNotBeEmpty, paramName), paramName);
}
}
}
#pragma warning restore 56507
// Throws exception if the specified Rule does not have a valid Id.
static internal void ThrowIfNull (object value, string paramName)
{
if (value == null)
{
throw new ArgumentNullException (paramName);
}
}
static internal bool CompareInvariantCulture (CultureInfo culture1, CultureInfo culture2)
{
// If perfect match easy
if (culture1.Equals (culture2))
{
return true;
}
// Compare the Neutral culture
while (!culture1.IsNeutralCulture)
{
culture1 = culture1.Parent;
}
while (!culture2.IsNeutralCulture)
{
culture2 = culture2.Parent;
}
return culture1.Equals (culture2);
}
// Copy the input cfg to the output.
// Streams point to the start of the data on entry and to the end on exit
static internal void CopyStream (Stream inputStream, Stream outputStream, int bytesToCopy)
{
// Copy using an intermediate buffer of a reasonable size.
int bufferSize = bytesToCopy > 4096 ? 4096 : bytesToCopy;
byte [] buffer = new byte [bufferSize];
int bytesRead;
while (bytesToCopy > 0)
{
bytesRead = inputStream.Read (buffer, 0, bufferSize);
if (bytesRead <= 0)
{
throw new EndOfStreamException (SR.Get (SRID.StreamEndedUnexpectedly));
}
outputStream.Write (buffer, 0, bytesRead);
bytesToCopy -= bytesRead;
}
}
// Copy the input cfg to the output.
// inputStream points to the start of the data on entry and to the end on exit
static internal byte [] ReadStreamToByteArray (Stream inputStream, int bytesToCopy)
{
byte [] outputArray = new byte [bytesToCopy];
BlockingRead (inputStream, outputArray, 0, bytesToCopy);
return outputArray;
}
static internal void BlockingRead (Stream stream, byte [] buffer, int offset, int count)
{
// Stream is not like IStream - it will block until some data is available but not necessarily all of it.
while (count > 0)
{
int read = stream.Read (buffer, offset, count);
if (read <= 0) // End of stream
{
throw new EndOfStreamException ();
}
count -= read;
offset += read;
}
}
///
/// Combine 2 cultures into in a composite one and assign a keyboardLayoutId
/// Language
/// ----
///
///
///
static internal void CombineCulture (string language, string location, CultureInfo parentCulture, int layoutId)
{
CultureInfo ciLanguage = new CultureInfo (language);
RegionInfo riLocation = new RegionInfo (location);
String strNewCulture = ciLanguage.TwoLetterISOLanguageName + "-" + riLocation.TwoLetterISORegionName;
CultureAndRegionInfoBuilder cb = new CultureAndRegionInfoBuilder (strNewCulture, CultureAndRegionModifiers.None);
cb.LoadDataFromRegionInfo (riLocation);
cb.LoadDataFromCultureInfo (ciLanguage);
// Fix stuff
cb.IetfLanguageTag = strNewCulture;
cb.Parent = parentCulture;
// Need to fix the language names
cb.ThreeLetterISOLanguageName = ciLanguage.ThreeLetterISOLanguageName;
cb.TwoLetterISOLanguageName = ciLanguage.TwoLetterISOLanguageName;
cb.ThreeLetterWindowsLanguageName = ciLanguage.ThreeLetterWindowsLanguageName;
// Need the Region Name in the current Language
cb.RegionNativeName = riLocation.NativeName;
// Fix the culture name(s)
string strEnglishLanguageName = ciLanguage.EnglishName.Substring (0, ciLanguage.EnglishName.IndexOf ("(", StringComparison.Ordinal) - 1);
string strNativeLanguageName = ciLanguage.NativeName.Substring (0, ciLanguage.NativeName.IndexOf ("(", StringComparison.Ordinal) - 1); ;
cb.CultureEnglishName = strEnglishLanguageName + " (" + cb.RegionEnglishName + ")";
cb.CultureNativeName = strNativeLanguageName + " (" + cb.RegionNativeName + ")";
// Currency Name
cb.CurrencyNativeName = riLocation.CurrencyNativeName;
// Numbers
cb.NumberFormat.PositiveInfinitySymbol = ciLanguage.NumberFormat.PositiveInfinitySymbol;
cb.NumberFormat.NegativeInfinitySymbol = ciLanguage.NumberFormat.NegativeInfinitySymbol;
cb.NumberFormat.NaNSymbol = ciLanguage.NumberFormat.NaNSymbol;
// Copy Calendar Strings
DateTimeFormatInfo dtfi = cb.GregorianDateTimeFormat;
DateTimeFormatInfo dtfiLanguage = ciLanguage.DateTimeFormat;
dtfiLanguage.Calendar = new GregorianCalendar ();
// Set the layoutId
cb.KeyboardLayoutId = layoutId;
// Copy calendar data from that gregorian localized calendar
dtfi.AbbreviatedDayNames = dtfiLanguage.AbbreviatedDayNames;
dtfi.AbbreviatedMonthGenitiveNames = dtfiLanguage.AbbreviatedMonthGenitiveNames;
dtfi.AbbreviatedMonthNames = dtfiLanguage.AbbreviatedMonthNames;
dtfi.DayNames = dtfiLanguage.DayNames;
dtfi.MonthGenitiveNames = dtfiLanguage.MonthGenitiveNames;
dtfi.MonthNames = dtfiLanguage.MonthNames;
dtfi.ShortestDayNames = dtfiLanguage.ShortestDayNames;
// Save it
cb.Register ();
}
#endregion
//********************************************************************
//
// Internal fields
//
//*******************************************************************
#region Internal fields
internal static readonly char [] _achTrimChars = new char [] { ' ', '\t', '\n', '\r' };
// Size of a char (avoid to use the marshal class
internal const int _sizeOfChar = 2;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------
using System;
using System.IO;
using System.Globalization;
#pragma warning disable 1634, 1691 // Allows suppression of certain PreSharp messages.
namespace System.Speech.Internal
{
internal static class Helpers
{
//*******************************************************************
//
// Internal Methods
//
//*******************************************************************
#region Internal Methods
// Disable parameter validation check
#pragma warning disable 56507
// Throws exception if the specified Rule does not have a valid Id.
static internal void ThrowIfEmptyOrNull (string s, string paramName)
{
if (string.IsNullOrEmpty (s))
{
if (s == null)
{
throw new ArgumentNullException (paramName);
}
else
{
throw new ArgumentException (SR.Get (SRID.StringCanNotBeEmpty, paramName), paramName);
}
}
}
#pragma warning restore 56507
// Throws exception if the specified Rule does not have a valid Id.
static internal void ThrowIfNull (object value, string paramName)
{
if (value == null)
{
throw new ArgumentNullException (paramName);
}
}
static internal bool CompareInvariantCulture (CultureInfo culture1, CultureInfo culture2)
{
// If perfect match easy
if (culture1.Equals (culture2))
{
return true;
}
// Compare the Neutral culture
while (!culture1.IsNeutralCulture)
{
culture1 = culture1.Parent;
}
while (!culture2.IsNeutralCulture)
{
culture2 = culture2.Parent;
}
return culture1.Equals (culture2);
}
// Copy the input cfg to the output.
// Streams point to the start of the data on entry and to the end on exit
static internal void CopyStream (Stream inputStream, Stream outputStream, int bytesToCopy)
{
// Copy using an intermediate buffer of a reasonable size.
int bufferSize = bytesToCopy > 4096 ? 4096 : bytesToCopy;
byte [] buffer = new byte [bufferSize];
int bytesRead;
while (bytesToCopy > 0)
{
bytesRead = inputStream.Read (buffer, 0, bufferSize);
if (bytesRead <= 0)
{
throw new EndOfStreamException (SR.Get (SRID.StreamEndedUnexpectedly));
}
outputStream.Write (buffer, 0, bytesRead);
bytesToCopy -= bytesRead;
}
}
// Copy the input cfg to the output.
// inputStream points to the start of the data on entry and to the end on exit
static internal byte [] ReadStreamToByteArray (Stream inputStream, int bytesToCopy)
{
byte [] outputArray = new byte [bytesToCopy];
BlockingRead (inputStream, outputArray, 0, bytesToCopy);
return outputArray;
}
static internal void BlockingRead (Stream stream, byte [] buffer, int offset, int count)
{
// Stream is not like IStream - it will block until some data is available but not necessarily all of it.
while (count > 0)
{
int read = stream.Read (buffer, offset, count);
if (read <= 0) // End of stream
{
throw new EndOfStreamException ();
}
count -= read;
offset += read;
}
}
///
/// Combine 2 cultures into in a composite one and assign a keyboardLayoutId
/// Language
/// ----
///
///
///
static internal void CombineCulture (string language, string location, CultureInfo parentCulture, int layoutId)
{
CultureInfo ciLanguage = new CultureInfo (language);
RegionInfo riLocation = new RegionInfo (location);
String strNewCulture = ciLanguage.TwoLetterISOLanguageName + "-" + riLocation.TwoLetterISORegionName;
CultureAndRegionInfoBuilder cb = new CultureAndRegionInfoBuilder (strNewCulture, CultureAndRegionModifiers.None);
cb.LoadDataFromRegionInfo (riLocation);
cb.LoadDataFromCultureInfo (ciLanguage);
// Fix stuff
cb.IetfLanguageTag = strNewCulture;
cb.Parent = parentCulture;
// Need to fix the language names
cb.ThreeLetterISOLanguageName = ciLanguage.ThreeLetterISOLanguageName;
cb.TwoLetterISOLanguageName = ciLanguage.TwoLetterISOLanguageName;
cb.ThreeLetterWindowsLanguageName = ciLanguage.ThreeLetterWindowsLanguageName;
// Need the Region Name in the current Language
cb.RegionNativeName = riLocation.NativeName;
// Fix the culture name(s)
string strEnglishLanguageName = ciLanguage.EnglishName.Substring (0, ciLanguage.EnglishName.IndexOf ("(", StringComparison.Ordinal) - 1);
string strNativeLanguageName = ciLanguage.NativeName.Substring (0, ciLanguage.NativeName.IndexOf ("(", StringComparison.Ordinal) - 1); ;
cb.CultureEnglishName = strEnglishLanguageName + " (" + cb.RegionEnglishName + ")";
cb.CultureNativeName = strNativeLanguageName + " (" + cb.RegionNativeName + ")";
// Currency Name
cb.CurrencyNativeName = riLocation.CurrencyNativeName;
// Numbers
cb.NumberFormat.PositiveInfinitySymbol = ciLanguage.NumberFormat.PositiveInfinitySymbol;
cb.NumberFormat.NegativeInfinitySymbol = ciLanguage.NumberFormat.NegativeInfinitySymbol;
cb.NumberFormat.NaNSymbol = ciLanguage.NumberFormat.NaNSymbol;
// Copy Calendar Strings
DateTimeFormatInfo dtfi = cb.GregorianDateTimeFormat;
DateTimeFormatInfo dtfiLanguage = ciLanguage.DateTimeFormat;
dtfiLanguage.Calendar = new GregorianCalendar ();
// Set the layoutId
cb.KeyboardLayoutId = layoutId;
// Copy calendar data from that gregorian localized calendar
dtfi.AbbreviatedDayNames = dtfiLanguage.AbbreviatedDayNames;
dtfi.AbbreviatedMonthGenitiveNames = dtfiLanguage.AbbreviatedMonthGenitiveNames;
dtfi.AbbreviatedMonthNames = dtfiLanguage.AbbreviatedMonthNames;
dtfi.DayNames = dtfiLanguage.DayNames;
dtfi.MonthGenitiveNames = dtfiLanguage.MonthGenitiveNames;
dtfi.MonthNames = dtfiLanguage.MonthNames;
dtfi.ShortestDayNames = dtfiLanguage.ShortestDayNames;
// Save it
cb.Register ();
}
#endregion
//********************************************************************
//
// Internal fields
//
//*******************************************************************
#region Internal fields
internal static readonly char [] _achTrimChars = new char [] { ' ', '\t', '\n', '\r' };
// Size of a char (avoid to use the marshal class
internal const int _sizeOfChar = 2;
#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
- ParameterModifier.cs
- AspNetHostingPermission.cs
- ImageSourceConverter.cs
- BrushValueSerializer.cs
- QueryResult.cs
- LicenseContext.cs
- HandledMouseEvent.cs
- ParameterToken.cs
- NetPeerTcpBinding.cs
- RefreshEventArgs.cs
- BamlStream.cs
- AvTraceDetails.cs
- C14NUtil.cs
- RemotingService.cs
- ObjectDataSourceChooseTypePanel.cs
- XmlSchemaObject.cs
- LayoutEngine.cs
- TextContainerChangeEventArgs.cs
- StylusPointPropertyInfoDefaults.cs
- WebPartHelpVerb.cs
- XsdDateTime.cs
- DoubleAnimationClockResource.cs
- CompoundFileReference.cs
- CanonicalFormWriter.cs
- Accessible.cs
- InvalidOperationException.cs
- Attachment.cs
- DbProviderManifest.cs
- EntityDataSource.cs
- CodeDomDecompiler.cs
- MonitorWrapper.cs
- SyntaxCheck.cs
- GeometryValueSerializer.cs
- FirstMatchCodeGroup.cs
- WindowsEditBox.cs
- StylusPlugInCollection.cs
- DockEditor.cs
- StringBuilder.cs
- XmlObjectSerializerWriteContextComplex.cs
- PeerNodeTraceRecord.cs
- GraphicsPath.cs
- ConnectionPoint.cs
- DoubleCollectionValueSerializer.cs
- UTF7Encoding.cs
- FixedNode.cs
- Errors.cs
- DefaultAsyncDataDispatcher.cs
- DecimalConverter.cs
- BaseHashHelper.cs
- XmlQueryRuntime.cs
- CodeEventReferenceExpression.cs
- ComponentChangingEvent.cs
- WindowsNonControl.cs
- ForwardPositionQuery.cs
- HwndSource.cs
- WmlSelectionListAdapter.cs
- DateBoldEvent.cs
- IncrementalReadDecoders.cs
- Misc.cs
- EllipticalNodeOperations.cs
- StringWriter.cs
- DataGridViewElement.cs
- DrawingBrush.cs
- ArrangedElement.cs
- SchemaNames.cs
- UserPreferenceChangedEventArgs.cs
- WeakHashtable.cs
- GeometryCombineModeValidation.cs
- Label.cs
- LookupBindingPropertiesAttribute.cs
- DateTimeConverter2.cs
- TextServicesCompartment.cs
- FunctionImportMapping.cs
- TraceHandler.cs
- TextRange.cs
- OuterProxyWrapper.cs
- TransformerConfigurationWizardBase.cs
- HandledEventArgs.cs
- DescendentsWalker.cs
- ConnectionStringsExpressionBuilder.cs
- MutexSecurity.cs
- SoapWriter.cs
- BlurEffect.cs
- FixedPageStructure.cs
- WindowsListViewItem.cs
- CodePageUtils.cs
- SqlError.cs
- XmlEncoding.cs
- ConstraintManager.cs
- DbProviderManifest.cs
- SerializationSectionGroup.cs
- MouseEventArgs.cs
- SystemResources.cs
- __ComObject.cs
- X509ChainPolicy.cs
- CompilationUnit.cs
- TextBoxLine.cs
- TableRow.cs
- SqlStatistics.cs
- DesignDataSource.cs