Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Serialization / CodeIdentifiers.cs / 1305376 / CodeIdentifiers.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Serialization {
using System;
using System.Collections;
using System.IO;
using System.Globalization;
class CaseInsensitiveKeyComparer : CaseInsensitiveComparer, IEqualityComparer{
public CaseInsensitiveKeyComparer() : base(CultureInfo.CurrentCulture) {
}
bool IEqualityComparer.Equals(Object x, Object y) {
return (Compare(x, y) == 0);
}
int IEqualityComparer.GetHashCode(Object obj) {
string s = obj as string;
if (s == null)
throw new ArgumentException(null, "obj");
return s.ToUpper(CultureInfo.CurrentCulture).GetHashCode();
}
}
///
///
///
/// [To be supplied.]
///
public class CodeIdentifiers {
Hashtable identifiers;
Hashtable reservedIdentifiers;
ArrayList list;
bool camelCase;
public CodeIdentifiers() : this(true) {
}
public CodeIdentifiers(bool caseSensitive) {
if (caseSensitive) {
identifiers = new Hashtable();
reservedIdentifiers = new Hashtable();
}
else {
IEqualityComparer comparer = new CaseInsensitiveKeyComparer();
identifiers = new Hashtable(comparer);
reservedIdentifiers = new Hashtable(comparer);
}
list = new ArrayList();
}
///
public void Clear(){
identifiers.Clear();
list.Clear();
}
///
///
/// [To be supplied.]
///
public bool UseCamelCasing {
get { return camelCase; }
set { camelCase = value; }
}
///
///
/// [To be supplied.]
///
public string MakeRightCase(string identifier) {
if (camelCase)
return CodeIdentifier.MakeCamel(identifier);
else
return CodeIdentifier.MakePascal(identifier);
}
///
///
/// [To be supplied.]
///
public string MakeUnique(string identifier) {
if (IsInUse(identifier)) {
for (int i = 1; ; i++) {
string newIdentifier = identifier + i.ToString(CultureInfo.InvariantCulture);
if (!IsInUse(newIdentifier)) {
identifier = newIdentifier;
break;
}
}
}
// Check that we did not violate the identifier length after appending the suffix.
if (identifier.Length > CodeIdentifier.MaxIdentifierLength) {
return MakeUnique("Item");
}
return identifier;
}
///
///
/// [To be supplied.]
///
public void AddReserved(string identifier) {
reservedIdentifiers.Add(identifier, identifier);
}
///
///
/// [To be supplied.]
///
public void RemoveReserved(string identifier) {
reservedIdentifiers.Remove(identifier);
}
///
///
/// [To be supplied.]
///
public string AddUnique(string identifier, object value) {
identifier = MakeUnique(identifier);
Add(identifier, value);
return identifier;
}
///
///
/// [To be supplied.]
///
public bool IsInUse(string identifier) {
return identifiers.Contains(identifier) || reservedIdentifiers.Contains(identifier);
}
///
///
/// [To be supplied.]
///
public void Add(string identifier, object value) {
identifiers.Add(identifier, value);
list.Add(value);
}
///
///
/// [To be supplied.]
///
public void Remove(string identifier) {
list.Remove(identifiers[identifier]);
identifiers.Remove(identifier);
}
///
///
/// [To be supplied.]
///
public object ToArray(Type type) {
//Array array = Array.CreateInstance(type, identifiers.Values.Count);
//identifiers.Values.CopyTo(array, 0);
Array array = Array.CreateInstance(type, list.Count);
list.CopyTo(array, 0);
return array;
}
internal CodeIdentifiers Clone() {
CodeIdentifiers newIdentifiers = new CodeIdentifiers();
newIdentifiers.identifiers = (Hashtable)this.identifiers.Clone();
newIdentifiers.reservedIdentifiers = (Hashtable)this.reservedIdentifiers.Clone();
newIdentifiers.list = (ArrayList)this.list.Clone();
newIdentifiers.camelCase = this.camelCase;
return newIdentifiers;
}
}
}
// 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
- followingquery.cs
- AspCompat.cs
- MergeFilterQuery.cs
- VisualBrush.cs
- DaylightTime.cs
- CatalogZoneBase.cs
- InvalidComObjectException.cs
- Token.cs
- ReadOnlyPropertyMetadata.cs
- DiagnosticsConfigurationHandler.cs
- MemberPath.cs
- SqlParameter.cs
- SqlLiftIndependentRowExpressions.cs
- CodeObject.cs
- UIElementIsland.cs
- WebContentFormatHelper.cs
- OpenTypeLayoutCache.cs
- CopyNodeSetAction.cs
- TdsParameterSetter.cs
- ADConnectionHelper.cs
- CompareInfo.cs
- Vector3DAnimationBase.cs
- ClassicBorderDecorator.cs
- EventLogReader.cs
- Matrix.cs
- ClientUtils.cs
- SqlTypeSystemProvider.cs
- ColumnMapTranslator.cs
- SupportingTokenSecurityTokenResolver.cs
- FamilyTypeface.cs
- FilteredSchemaElementLookUpTable.cs
- LassoSelectionBehavior.cs
- IndicFontClient.cs
- TiffBitmapEncoder.cs
- Timeline.cs
- DataGridViewDataErrorEventArgs.cs
- Quaternion.cs
- ToolStripButton.cs
- _HTTPDateParse.cs
- RtfControlWordInfo.cs
- EventDrivenDesigner.cs
- AudienceUriMode.cs
- CommandBindingCollection.cs
- RegexWriter.cs
- BooleanStorage.cs
- TextPointer.cs
- SqlDataReaderSmi.cs
- COSERVERINFO.cs
- DesignerDataSchemaClass.cs
- DialogResultConverter.cs
- RectangleGeometry.cs
- Menu.cs
- XLinq.cs
- UrlMappingsSection.cs
- ResXResourceSet.cs
- XmlArrayAttribute.cs
- _HeaderInfo.cs
- EncodingDataItem.cs
- SqlTriggerAttribute.cs
- ISFTagAndGuidCache.cs
- ControlPager.cs
- DescendentsWalkerBase.cs
- XmlSerializerFactory.cs
- AssemblyInfo.cs
- DebuggerAttributes.cs
- OleDbConnectionInternal.cs
- KeyPressEvent.cs
- HwndSourceParameters.cs
- PropertyMappingExceptionEventArgs.cs
- InteropTrackingRecord.cs
- RequestCacheManager.cs
- WpfPayload.cs
- BooleanExpr.cs
- ConfigurationManagerInternal.cs
- RSAPKCS1SignatureFormatter.cs
- DataObjectEventArgs.cs
- METAHEADER.cs
- AggregateNode.cs
- SessionParameter.cs
- ListViewGroup.cs
- QuadraticBezierSegment.cs
- SqlConnectionPoolGroupProviderInfo.cs
- XmlSerializerSection.cs
- SectionVisual.cs
- ExpressionVisitor.cs
- Int32AnimationBase.cs
- BitmapFrameEncode.cs
- RoutedEvent.cs
- URL.cs
- DesignerTransaction.cs
- GetBrowserTokenRequest.cs
- PriorityBindingExpression.cs
- AesCryptoServiceProvider.cs
- CodeTypeConstructor.cs
- DBPropSet.cs
- ReachDocumentReferenceSerializer.cs
- ProfessionalColors.cs
- EncryptedPackage.cs
- compensatingcollection.cs
- FormsAuthentication.cs