Code:
/ FX-1434 / FX-1434 / 1.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
- TextInfo.cs
- PeerApplicationLaunchInfo.cs
- DataServiceKeyAttribute.cs
- InkSerializer.cs
- MessageDecoder.cs
- TableCellCollection.cs
- Model3DGroup.cs
- Polygon.cs
- ObjectQuery_EntitySqlExtensions.cs
- DetailsViewRowCollection.cs
- OleDbTransaction.cs
- SharedDp.cs
- DrawingDrawingContext.cs
- ValueCollectionParameterReader.cs
- PipelineModuleStepContainer.cs
- HtmlTernaryTree.cs
- StrongNameKeyPair.cs
- KeyedHashAlgorithm.cs
- InlineObject.cs
- FrugalList.cs
- Stack.cs
- ManagementObjectCollection.cs
- TypeDependencyAttribute.cs
- TextElementAutomationPeer.cs
- BookmarkCallbackWrapper.cs
- SourceItem.cs
- ErrorFormatterPage.cs
- RectangleGeometry.cs
- SessionStateSection.cs
- DataGridLinkButton.cs
- PairComparer.cs
- StateDesigner.CommentLayoutGlyph.cs
- ValidatingPropertiesEventArgs.cs
- SystemIcmpV4Statistics.cs
- SHA384.cs
- LostFocusEventManager.cs
- Panel.cs
- ClosableStream.cs
- FilterQuery.cs
- input.cs
- PriorityRange.cs
- InkCanvasFeedbackAdorner.cs
- EditorZone.cs
- MembershipValidatePasswordEventArgs.cs
- BasicBrowserDialog.cs
- TagNameToTypeMapper.cs
- SyntaxCheck.cs
- SiteMapProvider.cs
- XmlSchema.cs
- ParentUndoUnit.cs
- TemplateManager.cs
- RequestCacheManager.cs
- EventDescriptor.cs
- WebPartAuthorizationEventArgs.cs
- MoveSizeWinEventHandler.cs
- PersonalizableTypeEntry.cs
- SymDocumentType.cs
- BitmapData.cs
- SectionInformation.cs
- ZipIOExtraField.cs
- MenuItemStyleCollection.cs
- DigestTraceRecordHelper.cs
- ProcessHost.cs
- StrongNameIdentityPermission.cs
- XsdBuilder.cs
- Size3DValueSerializer.cs
- HttpListenerPrefixCollection.cs
- SystemException.cs
- SqlCommand.cs
- SecurityDocument.cs
- SkewTransform.cs
- XmlAtomErrorReader.cs
- OdbcInfoMessageEvent.cs
- HttpApplicationFactory.cs
- ToolboxCategoryItems.cs
- CalendarItem.cs
- ItemCollection.cs
- AsyncCompletedEventArgs.cs
- NameValueConfigurationCollection.cs
- Int64.cs
- PointKeyFrameCollection.cs
- SrgsNameValueTag.cs
- XmlSchemaCompilationSettings.cs
- WebPartTransformerAttribute.cs
- ValueHandle.cs
- AuthenticateEventArgs.cs
- IItemProperties.cs
- ComPlusServiceHost.cs
- SspiWrapper.cs
- ComAdminInterfaces.cs
- ColumnResizeAdorner.cs
- XmlTextEncoder.cs
- SqlProfileProvider.cs
- Literal.cs
- ProfessionalColors.cs
- Errors.cs
- DocumentViewerBaseAutomationPeer.cs
- RemotingException.cs
- DynamicMetaObject.cs
- Marshal.cs