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
- UriScheme.cs
- Vector3DCollection.cs
- Point3DAnimationUsingKeyFrames.cs
- EditorResources.cs
- Exceptions.cs
- Authorization.cs
- DuplicateWaitObjectException.cs
- HierarchicalDataBoundControlAdapter.cs
- Vector3DCollection.cs
- Composition.cs
- EditorPartCollection.cs
- PlatformNotSupportedException.cs
- RijndaelManaged.cs
- EdmScalarPropertyAttribute.cs
- TreeView.cs
- SoapInteropTypes.cs
- AddInStore.cs
- RootProfilePropertySettingsCollection.cs
- NotifyIcon.cs
- ComboBoxRenderer.cs
- PathGradientBrush.cs
- HttpVersion.cs
- SourceItem.cs
- log.cs
- EnumerationRangeValidationUtil.cs
- StickyNoteContentControl.cs
- CurrentChangingEventManager.cs
- IsolatedStorageFileStream.cs
- ByteAnimationBase.cs
- RangeValuePattern.cs
- StorageSetMapping.cs
- FrameworkRichTextComposition.cs
- PasswordBox.cs
- BaseTemplateParser.cs
- XmlILStorageConverter.cs
- Array.cs
- control.ime.cs
- HtmlImageAdapter.cs
- KeyGestureConverter.cs
- NavigationPropertyEmitter.cs
- ComponentResourceKeyConverter.cs
- WinInet.cs
- RightsManagementEncryptionTransform.cs
- FontFamilyIdentifier.cs
- VectorAnimationBase.cs
- SystemInfo.cs
- DataError.cs
- DependencyPropertyChangedEventArgs.cs
- shaperfactory.cs
- XmlElementList.cs
- SoundPlayerAction.cs
- MarshalDirectiveException.cs
- StorageBasedPackageProperties.cs
- AnonymousIdentificationModule.cs
- WebResponse.cs
- QueryCacheKey.cs
- CodeAccessPermission.cs
- ObjectStateManagerMetadata.cs
- BaseCodePageEncoding.cs
- CanonicalFormWriter.cs
- TextTreeInsertUndoUnit.cs
- ClassicBorderDecorator.cs
- TreeNodeStyle.cs
- DependsOnAttribute.cs
- KnownBoxes.cs
- ComponentDispatcher.cs
- GradientBrush.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- BindingGroup.cs
- TokenBasedSetEnumerator.cs
- EntitySqlQueryBuilder.cs
- HttpWebRequestElement.cs
- Point3DConverter.cs
- SystemIPInterfaceStatistics.cs
- SoapFault.cs
- ListCollectionView.cs
- DataControlFieldCollection.cs
- ClientRolePrincipal.cs
- StoreContentChangedEventArgs.cs
- HttpWebResponse.cs
- CodeSnippetStatement.cs
- EntityDataSourceChangingEventArgs.cs
- Command.cs
- LayoutEvent.cs
- ComplexTypeEmitter.cs
- DbConnectionPoolGroupProviderInfo.cs
- GridViewCancelEditEventArgs.cs
- unsafenativemethodsother.cs
- QueryRewriter.cs
- Mapping.cs
- DataListItemCollection.cs
- UnaryNode.cs
- Regex.cs
- VisualStyleRenderer.cs
- ControlBuilder.cs
- XmlSchemaSimpleContentRestriction.cs
- GuidConverter.cs
- MemberDomainMap.cs
- DateTimeUtil.cs
- StyleBamlRecordReader.cs