Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / Serialization / CodeIdentifiers.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NeutralResourcesLanguageAttribute.cs
- MembershipUser.cs
- ElementMarkupObject.cs
- ListBox.cs
- ActiveXContainer.cs
- Int32.cs
- FilterFactory.cs
- RemotingServices.cs
- XmlUrlResolver.cs
- SerializationInfoEnumerator.cs
- SimpleWebHandlerParser.cs
- VisualBasicReference.cs
- Unit.cs
- SecureEnvironment.cs
- ModelFunction.cs
- BaseTemplateBuildProvider.cs
- Pen.cs
- CodeRemoveEventStatement.cs
- Configuration.cs
- wmiprovider.cs
- OrderByBuilder.cs
- AttachInfo.cs
- Enlistment.cs
- ControlCachePolicy.cs
- MinimizableAttributeTypeConverter.cs
- GraphicsContext.cs
- PointConverter.cs
- ExpandoClass.cs
- SettingsAttributeDictionary.cs
- baseshape.cs
- XmlSerializerVersionAttribute.cs
- StateWorkerRequest.cs
- TextLineBreak.cs
- MediaTimeline.cs
- DBBindings.cs
- AlternationConverter.cs
- XmlSchema.cs
- PaperSize.cs
- ContractMapping.cs
- ExpandableObjectConverter.cs
- NestedContainer.cs
- DrawingVisual.cs
- AvTraceFormat.cs
- AssemblyCollection.cs
- RegisteredExpandoAttribute.cs
- LayoutTableCell.cs
- TreeViewCancelEvent.cs
- SafeRightsManagementHandle.cs
- SystemTcpStatistics.cs
- ImmutableCommunicationTimeouts.cs
- XmlMapping.cs
- QilInvoke.cs
- PerfService.cs
- Animatable.cs
- StreamingContext.cs
- ButtonFieldBase.cs
- odbcmetadatacollectionnames.cs
- InternalResources.cs
- TreeNodeStyle.cs
- MatrixKeyFrameCollection.cs
- TabControl.cs
- DESCryptoServiceProvider.cs
- ScrollViewer.cs
- Point4D.cs
- UserControl.cs
- PenLineJoinValidation.cs
- CustomAttributeFormatException.cs
- OptimizedTemplateContentHelper.cs
- IntSecurity.cs
- ForeignKeyConstraint.cs
- ContextMenuStrip.cs
- ProcessHost.cs
- GridPatternIdentifiers.cs
- MultiBinding.cs
- TimeoutHelper.cs
- ApplyImportsAction.cs
- StringBlob.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- XmlSchemaObject.cs
- _AutoWebProxyScriptHelper.cs
- DataColumnMappingCollection.cs
- SoapSchemaImporter.cs
- FontStyleConverter.cs
- CompiledELinqQueryState.cs
- FormViewPageEventArgs.cs
- PropertyEntry.cs
- QilInvokeEarlyBound.cs
- SessionPageStateSection.cs
- ArrayElementGridEntry.cs
- WeakReferenceKey.cs
- TextCollapsingProperties.cs
- PropertyGeneratedEventArgs.cs
- DesignerHost.cs
- Rfc2898DeriveBytes.cs
- ContentHostHelper.cs
- DbProviderFactories.cs
- BitmapFrameDecode.cs
- StateDesigner.Helpers.cs
- TcpClientChannel.cs
- AuthenticationException.cs