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(); } } ////// /// /// 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(); } ///[To be supplied.] ///public void Clear(){ identifiers.Clear(); list.Clear(); } /// /// /// 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.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ServerProtocol.cs
- ToolStripItemTextRenderEventArgs.cs
- Path.cs
- XmlUrlResolver.cs
- SystemEvents.cs
- TemplateKey.cs
- InkCollectionBehavior.cs
- _ProxyChain.cs
- TextElement.cs
- DBDataPermissionAttribute.cs
- Encoding.cs
- DesignerVerbCollection.cs
- TogglePatternIdentifiers.cs
- SystemIPGlobalProperties.cs
- ContentPlaceHolder.cs
- ColorIndependentAnimationStorage.cs
- DataPagerFieldItem.cs
- ContainerControl.cs
- WindowInteractionStateTracker.cs
- HostedTransportConfigurationManager.cs
- PageContent.cs
- MenuEventArgs.cs
- DetailsViewAutoFormat.cs
- RSACryptoServiceProvider.cs
- ConsoleTraceListener.cs
- DrawingDrawingContext.cs
- AsyncOperation.cs
- GPPOINT.cs
- Quad.cs
- CultureInfo.cs
- ControlCachePolicy.cs
- TextEndOfParagraph.cs
- CalendarButtonAutomationPeer.cs
- ComponentDispatcher.cs
- UnsafeNativeMethods.cs
- CriticalFinalizerObject.cs
- ValueQuery.cs
- BaseResourcesBuildProvider.cs
- SettingsSection.cs
- TaskResultSetter.cs
- ProtectedConfiguration.cs
- RewritingSimplifier.cs
- HasCopySemanticsAttribute.cs
- FontDriver.cs
- EntitySqlQueryBuilder.cs
- SoapFault.cs
- SecurityPolicyVersion.cs
- EntryWrittenEventArgs.cs
- ExpressionParser.cs
- ListView.cs
- CookielessHelper.cs
- InvalidComObjectException.cs
- BitmapEffectGroup.cs
- Document.cs
- InitialServerConnectionReader.cs
- PerspectiveCamera.cs
- HostExecutionContextManager.cs
- ProcessModelSection.cs
- SetIterators.cs
- SerializeAbsoluteContext.cs
- ChildrenQuery.cs
- SafeRightsManagementSessionHandle.cs
- MemberExpression.cs
- XmlDataSource.cs
- ToolStripContentPanel.cs
- AddInIpcChannel.cs
- GACIdentityPermission.cs
- FieldBuilder.cs
- Comparer.cs
- AxHost.cs
- ToolboxItemImageConverter.cs
- UInt64Storage.cs
- TextFormatterHost.cs
- InProcStateClientManager.cs
- LockedBorderGlyph.cs
- AdornedElementPlaceholder.cs
- SHA256Managed.cs
- XmlTextEncoder.cs
- PartialTrustVisibleAssembly.cs
- Root.cs
- SchemaElement.cs
- MenuAdapter.cs
- IISUnsafeMethods.cs
- CalendarDay.cs
- ComponentResourceKeyConverter.cs
- PropertyToken.cs
- ListViewDeletedEventArgs.cs
- MSAAEventDispatcher.cs
- ObjectViewListener.cs
- _IPv6Address.cs
- ServerValidateEventArgs.cs
- CqlQuery.cs
- ErrorsHelper.cs
- DefaultPrintController.cs
- AutomationIdentifier.cs
- DocumentsTrace.cs
- ReliableReplySessionChannel.cs
- TabletDeviceInfo.cs
- CellParagraph.cs
- WSSecurityXXX2005.cs