Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Recognition / SrgsGrammar / srgsitem.cs / 1 / srgsitem.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description:
//
// History:
// 5/1/2004 jeanfp Created from the Kurosawa Code
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.Speech.Internal;
using System.Speech.Internal.SrgsParser;
using System.Text;
using System.Xml;
namespace System.Speech.Recognition.SrgsGrammar
{
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item"]/*' />
[Serializable]
[DebuggerDisplay ("{DebuggerDisplayString ()}")]
[DebuggerTypeProxy (typeof (SrgsItemDebugDisplay))]
public class SrgsItem : SrgsElement, IItem
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item1"]/*' />
public SrgsItem ()
{
_elements = new SrgsElementList ();
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item2"]/*' />
public SrgsItem (string text)
: this ()
{
Helpers.ThrowIfEmptyOrNull (text, "text");
_elements.Add (new SrgsText (text));
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item8"]/*' />
public SrgsItem (params SrgsElement [] elements)
: this ()
{
Helpers.ThrowIfNull (elements, "elements");
for (int iElement = 0; iElement < elements.Length; iElement++)
{
if (elements [iElement] == null)
{
throw new ArgumentNullException ("elements", SR.Get (SRID.ParamsEntryNullIllegal));
}
_elements.Add (elements [iElement]);
}
}
///
/// TODOC
///
///
public SrgsItem (int repeatCount)
: this ()
{
SetRepeat (repeatCount);
}
///
/// TODOC
///
///
///
public SrgsItem (int min, int max)
: this ()
{
SetRepeat (min, max);
}
//overloads with setting the repeat.
///
/// TODOC
///
///
///
///
public SrgsItem (int min, int max, string text)
: this (text)
{
SetRepeat (min, max);
}
///
/// TODOC
///
///
///
///
public SrgsItem (int min, int max, params SrgsElement [] elements)
: this (elements)
{
SetRepeat (min, max);
}
#endregion
//********************************************************************
//
// Public Method
//
//*******************************************************************
#region Public Method
///
/// TODOC
///
///
public void SetRepeat (int count)
{
// Negative values are not allowed
if (count < 0 || count > 255)
{
throw new ArgumentOutOfRangeException ("count");
}
_minRepeat = _maxRepeat = count;
}
///
/// TODOC
///
///
///
public void SetRepeat (int minRepeat, int maxRepeat)
{
// Negative values are not allowed
if (minRepeat < 0 || minRepeat > 255)
{
throw new ArgumentOutOfRangeException ("minRepeat", SR.Get (SRID.InvalidMinRepeat, minRepeat));
}
if (maxRepeat != int.MaxValue && (maxRepeat < 0 || maxRepeat > 255))
{
throw new ArgumentOutOfRangeException ("maxRepeat", SR.Get (SRID.InvalidMinRepeat, maxRepeat));
}
// Max be greater or equal to min
if (minRepeat > maxRepeat)
{
throw new ArgumentException (SR.Get (SRID.MinGreaterThanMax));
}
_minRepeat = minRepeat;
_maxRepeat = maxRepeat;
}
///
/// TODOC
///
///
public void Add (SrgsElement element)
{
Helpers.ThrowIfNull (element, "element");
Elements.Add (element);
}
#endregion
//********************************************************************
//
// Public Properties
//
//********************************************************************
#region Public Properties
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Elements"]/*' />
public Collection Elements
{
get
{
return _elements;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.RepeatProbability"]/*' />
// The probability that this item will be repeated.
public float RepeatProbability
{
get
{
return _repeatProbability;
}
set
{
if (value < 0.0f || value > 1.0f)
{
throw new ArgumentOutOfRangeException ("value", SR.Get (SRID.InvalidRepeatProbability, value));
}
_repeatProbability = value;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.MinRepeat"]/*' />
// The minimum number of occurrences this item can/must be repeated.
public int MinRepeat
{
get
{
return _minRepeat == NotSet ? 1 : _minRepeat;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.MaxRepeat"]/*' />
// The maximum number of occurrences this item can/must be repeated.
public int MaxRepeat
{
get
{
return _maxRepeat == NotSet ? 1 : _maxRepeat;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Weight"]/*' />
public float Weight
{
get
{
return _weight;
}
set
{
if (value <= 0.0f)
{
throw new ArgumentOutOfRangeException ("value", SR.Get (SRID.InvalidWeight, value));
}
_weight = value;
}
}
#endregion
//*******************************************************************
//
// Internal Methods
//
//********************************************************************
#region Internal Methods
///
/// Write the XML fragment describing the object.
///
///
internal override void WriteSrgs (XmlWriter writer)
{
// Write -
writer.WriteStartElement ("item");
if (!_weight.Equals (1.0f))
{
writer.WriteAttributeString ("weight", _weight.ToString ("0.########", CultureInfo.InvariantCulture));
}
if (!_repeatProbability.Equals (0.5f))
{
writer.WriteAttributeString ("repeat-prob", _repeatProbability.ToString ("0.########", CultureInfo.InvariantCulture));
}
if (_minRepeat == _maxRepeat)
{
// could be because both value are NotSet of equal
if (_minRepeat != NotSet)
{
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}", _minRepeat));
}
}
else if (_maxRepeat == int.MaxValue || _maxRepeat == NotSet)
{
// MinValue Set but not Max Value
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}-", _minRepeat));
}
else
{
// Max Value Set and maybe MinValue
int minRepeat = _minRepeat == NotSet ? 1 : _minRepeat;
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}-{1}", minRepeat, _maxRepeat));
}
// Write
- body and footer.
Type previousElementType = null;
foreach (SrgsElement element in _elements)
{
// Insert space between consecutive SrgsText _elements.
Type elementType = element.GetType ();
if ((elementType == typeof (SrgsText)) && (elementType == previousElementType))
{
writer.WriteString (" ");
}
previousElementType = elementType;
element.WriteSrgs (writer);
}
writer.WriteEndElement ();
}
internal override string DebuggerDisplayString ()
{
StringBuilder sb = new StringBuilder ();
if (_elements.Count > 7)
{
sb.Append ("SrgsItem Count = ");
sb.Append (_elements.Count.ToString (CultureInfo.InstalledUICulture));
}
else
{
if (_minRepeat != _maxRepeat || _maxRepeat != NotSet)
{
sb.Append ("[");
if (_minRepeat == _maxRepeat)
{
sb.Append (_minRepeat.ToString (CultureInfo.InvariantCulture));
}
else if (_maxRepeat == int.MaxValue || _maxRepeat == NotSet)
{
// MinValue Set but not Max Value
sb.Append (string.Format (CultureInfo.InvariantCulture, "{0},-", _minRepeat));
}
else
{
// Max Value Set and maybe MinValue
int minRepeat = _minRepeat == NotSet ? 1 : _minRepeat;
sb.Append (string.Format (CultureInfo.InvariantCulture, "{0},{1}", minRepeat, _maxRepeat));
}
sb.Append ("] ");
}
bool first = true;
foreach (SrgsElement element in _elements)
{
if (!first)
{
sb.Append (" ");
}
sb.Append ("{");
sb.Append (element.DebuggerDisplayString ());
sb.Append ("}");
first = false;
}
}
return sb.ToString ();
}
#endregion
//*******************************************************************
//
// Protected Properties
//
//*******************************************************************
#region Protected Properties
///
/// Allows the Srgs Element base class to implement
/// features requiring recursion in the elements tree.
///
///
internal override SrgsElement [] Children
{
get
{
SrgsElement [] elements = new SrgsElement [_elements.Count];
int i = 0;
foreach (SrgsElement element in _elements)
{
elements [i++] = element;
}
return elements;
}
}
#endregion
//*******************************************************************
//
// Private Methods
//
//********************************************************************
#region Private Methods
#endregion
//*******************************************************************
//
// Private Fields
//
//********************************************************************
#region Private Fields
private float _weight = 1.0f;
private float _repeatProbability = 0.5f;
private int _minRepeat = NotSet;
private int _maxRepeat = NotSet;
private SrgsElementList _elements;
private const int NotSet = -1;
#endregion
//********************************************************************
//
// Private Types
//
//*******************************************************************
#region Private Types
// Used by the debbugger display attribute
internal class SrgsItemDebugDisplay
{
public SrgsItemDebugDisplay (SrgsItem item)
{
_weight = item._weight;
_repeatProbability = item._repeatProbability;
_minRepeat = item._minRepeat;
_maxRepeat = item._maxRepeat;
_elements = item._elements;
}
public object Weigth
{
get
{
return _weight;
}
}
public object MinRepeat
{
get
{
return _minRepeat;
}
}
public object MaxRepeat
{
get
{
return _maxRepeat;
}
}
public object RepeatProbability
{
get
{
return _repeatProbability;
}
}
public object Count
{
get
{
return _elements.Count;
}
}
[DebuggerBrowsable (DebuggerBrowsableState.RootHidden)]
public SrgsElement [] AKeys
{
get
{
SrgsElement [] elements = new SrgsElement [_elements.Count];
for (int i = 0; i < _elements.Count; i++)
{
elements [i] = _elements [i];
}
return elements;
}
}
private float _weight = 1.0f;
private float _repeatProbability = 0.5f;
private int _minRepeat = NotSet;
private int _maxRepeat = NotSet;
private SrgsElementList _elements;
}
#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:
// 5/1/2004 jeanfp Created from the Kurosawa Code
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.Speech.Internal;
using System.Speech.Internal.SrgsParser;
using System.Text;
using System.Xml;
namespace System.Speech.Recognition.SrgsGrammar
{
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item"]/*' />
[Serializable]
[DebuggerDisplay ("{DebuggerDisplayString ()}")]
[DebuggerTypeProxy (typeof (SrgsItemDebugDisplay))]
public class SrgsItem : SrgsElement, IItem
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item1"]/*' />
public SrgsItem ()
{
_elements = new SrgsElementList ();
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item2"]/*' />
public SrgsItem (string text)
: this ()
{
Helpers.ThrowIfEmptyOrNull (text, "text");
_elements.Add (new SrgsText (text));
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Item8"]/*' />
public SrgsItem (params SrgsElement [] elements)
: this ()
{
Helpers.ThrowIfNull (elements, "elements");
for (int iElement = 0; iElement < elements.Length; iElement++)
{
if (elements [iElement] == null)
{
throw new ArgumentNullException ("elements", SR.Get (SRID.ParamsEntryNullIllegal));
}
_elements.Add (elements [iElement]);
}
}
///
/// TODOC
///
///
public SrgsItem (int repeatCount)
: this ()
{
SetRepeat (repeatCount);
}
///
/// TODOC
///
///
///
public SrgsItem (int min, int max)
: this ()
{
SetRepeat (min, max);
}
//overloads with setting the repeat.
///
/// TODOC
///
///
///
///
public SrgsItem (int min, int max, string text)
: this (text)
{
SetRepeat (min, max);
}
///
/// TODOC
///
///
///
///
public SrgsItem (int min, int max, params SrgsElement [] elements)
: this (elements)
{
SetRepeat (min, max);
}
#endregion
//********************************************************************
//
// Public Method
//
//*******************************************************************
#region Public Method
///
/// TODOC
///
///
public void SetRepeat (int count)
{
// Negative values are not allowed
if (count < 0 || count > 255)
{
throw new ArgumentOutOfRangeException ("count");
}
_minRepeat = _maxRepeat = count;
}
///
/// TODOC
///
///
///
public void SetRepeat (int minRepeat, int maxRepeat)
{
// Negative values are not allowed
if (minRepeat < 0 || minRepeat > 255)
{
throw new ArgumentOutOfRangeException ("minRepeat", SR.Get (SRID.InvalidMinRepeat, minRepeat));
}
if (maxRepeat != int.MaxValue && (maxRepeat < 0 || maxRepeat > 255))
{
throw new ArgumentOutOfRangeException ("maxRepeat", SR.Get (SRID.InvalidMinRepeat, maxRepeat));
}
// Max be greater or equal to min
if (minRepeat > maxRepeat)
{
throw new ArgumentException (SR.Get (SRID.MinGreaterThanMax));
}
_minRepeat = minRepeat;
_maxRepeat = maxRepeat;
}
///
/// TODOC
///
///
public void Add (SrgsElement element)
{
Helpers.ThrowIfNull (element, "element");
Elements.Add (element);
}
#endregion
//********************************************************************
//
// Public Properties
//
//********************************************************************
#region Public Properties
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Elements"]/*' />
public Collection Elements
{
get
{
return _elements;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.RepeatProbability"]/*' />
// The probability that this item will be repeated.
public float RepeatProbability
{
get
{
return _repeatProbability;
}
set
{
if (value < 0.0f || value > 1.0f)
{
throw new ArgumentOutOfRangeException ("value", SR.Get (SRID.InvalidRepeatProbability, value));
}
_repeatProbability = value;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.MinRepeat"]/*' />
// The minimum number of occurrences this item can/must be repeated.
public int MinRepeat
{
get
{
return _minRepeat == NotSet ? 1 : _minRepeat;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.MaxRepeat"]/*' />
// The maximum number of occurrences this item can/must be repeated.
public int MaxRepeat
{
get
{
return _maxRepeat == NotSet ? 1 : _maxRepeat;
}
}
/// TODOC <_include file='doc\Item.uex' path='docs/doc[@for="Item.Weight"]/*' />
public float Weight
{
get
{
return _weight;
}
set
{
if (value <= 0.0f)
{
throw new ArgumentOutOfRangeException ("value", SR.Get (SRID.InvalidWeight, value));
}
_weight = value;
}
}
#endregion
//*******************************************************************
//
// Internal Methods
//
//********************************************************************
#region Internal Methods
///
/// Write the XML fragment describing the object.
///
///
internal override void WriteSrgs (XmlWriter writer)
{
// Write -
writer.WriteStartElement ("item");
if (!_weight.Equals (1.0f))
{
writer.WriteAttributeString ("weight", _weight.ToString ("0.########", CultureInfo.InvariantCulture));
}
if (!_repeatProbability.Equals (0.5f))
{
writer.WriteAttributeString ("repeat-prob", _repeatProbability.ToString ("0.########", CultureInfo.InvariantCulture));
}
if (_minRepeat == _maxRepeat)
{
// could be because both value are NotSet of equal
if (_minRepeat != NotSet)
{
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}", _minRepeat));
}
}
else if (_maxRepeat == int.MaxValue || _maxRepeat == NotSet)
{
// MinValue Set but not Max Value
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}-", _minRepeat));
}
else
{
// Max Value Set and maybe MinValue
int minRepeat = _minRepeat == NotSet ? 1 : _minRepeat;
writer.WriteAttributeString ("repeat", string.Format (CultureInfo.InvariantCulture, "{0}-{1}", minRepeat, _maxRepeat));
}
// Write
- body and footer.
Type previousElementType = null;
foreach (SrgsElement element in _elements)
{
// Insert space between consecutive SrgsText _elements.
Type elementType = element.GetType ();
if ((elementType == typeof (SrgsText)) && (elementType == previousElementType))
{
writer.WriteString (" ");
}
previousElementType = elementType;
element.WriteSrgs (writer);
}
writer.WriteEndElement ();
}
internal override string DebuggerDisplayString ()
{
StringBuilder sb = new StringBuilder ();
if (_elements.Count > 7)
{
sb.Append ("SrgsItem Count = ");
sb.Append (_elements.Count.ToString (CultureInfo.InstalledUICulture));
}
else
{
if (_minRepeat != _maxRepeat || _maxRepeat != NotSet)
{
sb.Append ("[");
if (_minRepeat == _maxRepeat)
{
sb.Append (_minRepeat.ToString (CultureInfo.InvariantCulture));
}
else if (_maxRepeat == int.MaxValue || _maxRepeat == NotSet)
{
// MinValue Set but not Max Value
sb.Append (string.Format (CultureInfo.InvariantCulture, "{0},-", _minRepeat));
}
else
{
// Max Value Set and maybe MinValue
int minRepeat = _minRepeat == NotSet ? 1 : _minRepeat;
sb.Append (string.Format (CultureInfo.InvariantCulture, "{0},{1}", minRepeat, _maxRepeat));
}
sb.Append ("] ");
}
bool first = true;
foreach (SrgsElement element in _elements)
{
if (!first)
{
sb.Append (" ");
}
sb.Append ("{");
sb.Append (element.DebuggerDisplayString ());
sb.Append ("}");
first = false;
}
}
return sb.ToString ();
}
#endregion
//*******************************************************************
//
// Protected Properties
//
//*******************************************************************
#region Protected Properties
///
/// Allows the Srgs Element base class to implement
/// features requiring recursion in the elements tree.
///
///
internal override SrgsElement [] Children
{
get
{
SrgsElement [] elements = new SrgsElement [_elements.Count];
int i = 0;
foreach (SrgsElement element in _elements)
{
elements [i++] = element;
}
return elements;
}
}
#endregion
//*******************************************************************
//
// Private Methods
//
//********************************************************************
#region Private Methods
#endregion
//*******************************************************************
//
// Private Fields
//
//********************************************************************
#region Private Fields
private float _weight = 1.0f;
private float _repeatProbability = 0.5f;
private int _minRepeat = NotSet;
private int _maxRepeat = NotSet;
private SrgsElementList _elements;
private const int NotSet = -1;
#endregion
//********************************************************************
//
// Private Types
//
//*******************************************************************
#region Private Types
// Used by the debbugger display attribute
internal class SrgsItemDebugDisplay
{
public SrgsItemDebugDisplay (SrgsItem item)
{
_weight = item._weight;
_repeatProbability = item._repeatProbability;
_minRepeat = item._minRepeat;
_maxRepeat = item._maxRepeat;
_elements = item._elements;
}
public object Weigth
{
get
{
return _weight;
}
}
public object MinRepeat
{
get
{
return _minRepeat;
}
}
public object MaxRepeat
{
get
{
return _maxRepeat;
}
}
public object RepeatProbability
{
get
{
return _repeatProbability;
}
}
public object Count
{
get
{
return _elements.Count;
}
}
[DebuggerBrowsable (DebuggerBrowsableState.RootHidden)]
public SrgsElement [] AKeys
{
get
{
SrgsElement [] elements = new SrgsElement [_elements.Count];
for (int i = 0; i < _elements.Count; i++)
{
elements [i] = _elements [i];
}
return elements;
}
}
private float _weight = 1.0f;
private float _repeatProbability = 0.5f;
private int _minRepeat = NotSet;
private int _maxRepeat = NotSet;
private SrgsElementList _elements;
}
#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
- AppDomainUnloadedException.cs
- Wizard.cs
- ProfileProvider.cs
- AnimationClock.cs
- Connector.xaml.cs
- WebGetAttribute.cs
- PackWebRequestFactory.cs
- CompositeDataBoundControl.cs
- SerializationEventsCache.cs
- DataGridAddNewRow.cs
- ImageFormatConverter.cs
- OutputCacheProfileCollection.cs
- InkCanvasSelectionAdorner.cs
- VectorAnimationUsingKeyFrames.cs
- Message.cs
- TcpStreams.cs
- VersionedStreamOwner.cs
- UpdateExpressionVisitor.cs
- dataprotectionpermissionattribute.cs
- UpdateExpressionVisitor.cs
- LayoutEngine.cs
- EventListenerClientSide.cs
- ObjRef.cs
- SqlServer2KCompatibilityCheck.cs
- XPathSelectionIterator.cs
- TargetPerspective.cs
- MenuItemBinding.cs
- ExtensionDataReader.cs
- XamlWriter.cs
- FormViewDesigner.cs
- MissingMethodException.cs
- PolicyManager.cs
- GraphicsContainer.cs
- cryptoapiTransform.cs
- KeyedHashAlgorithm.cs
- Descriptor.cs
- ObjectDataSourceStatusEventArgs.cs
- Color.cs
- JoinGraph.cs
- EntityDataSource.cs
- HelpInfo.cs
- HatchBrush.cs
- AssemblyCache.cs
- FtpRequestCacheValidator.cs
- PointAnimation.cs
- TextBoxBase.cs
- FunctionNode.cs
- DbConnectionStringCommon.cs
- SqlProcedureAttribute.cs
- ValueExpressions.cs
- mediapermission.cs
- FlowDocumentPaginator.cs
- InputReport.cs
- NativeMethods.cs
- DataColumnCollection.cs
- EpmHelper.cs
- ProxyManager.cs
- ToolConsole.cs
- TableChangeProcessor.cs
- ProtectedProviderSettings.cs
- Vector.cs
- ScriptHandlerFactory.cs
- FileUtil.cs
- CompiledIdentityConstraint.cs
- BCLDebug.cs
- CorruptStoreException.cs
- UDPClient.cs
- ScrollProperties.cs
- BitmapMetadataEnumerator.cs
- MeasureItemEvent.cs
- XamlPointCollectionSerializer.cs
- DbCommandTree.cs
- BounceEase.cs
- PerformanceCounterLib.cs
- RewritingSimplifier.cs
- InternalCache.cs
- StringFunctions.cs
- MergablePropertyAttribute.cs
- RecognizedAudio.cs
- TextPointerBase.cs
- ProvideValueServiceProvider.cs
- SeverityFilter.cs
- HttpProtocolReflector.cs
- ContentPlaceHolder.cs
- Queue.cs
- DependentList.cs
- InputBuffer.cs
- OracleInfoMessageEventArgs.cs
- cache.cs
- AssemblyCache.cs
- UIElement3D.cs
- WebPartManager.cs
- ConsumerConnectionPointCollection.cs
- PropertyItemInternal.cs
- VectorCollectionConverter.cs
- CLSCompliantAttribute.cs
- TiffBitmapDecoder.cs
- TypeConverterHelper.cs
- XmlSchemaValidator.cs
- IndicFontClient.cs