Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- EdmSchemaAttribute.cs
- FocusTracker.cs
- CodeCastExpression.cs
- DateTimeParse.cs
- LinkButton.cs
- ArrayList.cs
- PathSegmentCollection.cs
- SolidColorBrush.cs
- ProjectionCamera.cs
- TableDetailsCollection.cs
- DataTableClearEvent.cs
- CalendarDay.cs
- CompatibleComparer.cs
- RenderDataDrawingContext.cs
- ClientSideQueueItem.cs
- RoleManagerSection.cs
- AssemblyBuilderData.cs
- XamlTreeBuilderBamlRecordWriter.cs
- RequestQueue.cs
- AsyncPostBackErrorEventArgs.cs
- RolePrincipal.cs
- RegistrySecurity.cs
- EventSinkHelperWriter.cs
- ApplyHostConfigurationBehavior.cs
- TdsParserStaticMethods.cs
- DataSet.cs
- LineInfo.cs
- MatrixStack.cs
- DomainUpDown.cs
- WebBrowserSiteBase.cs
- ObfuscationAttribute.cs
- ValidationError.cs
- DataObjectFieldAttribute.cs
- VBCodeProvider.cs
- ValidatingPropertiesEventArgs.cs
- CodeStatementCollection.cs
- DBCSCodePageEncoding.cs
- RegularExpressionValidator.cs
- WebBrowserDesigner.cs
- Animatable.cs
- RequestChannelBinder.cs
- MembershipUser.cs
- AliasGenerator.cs
- TemplatePagerField.cs
- X509ChainPolicy.cs
- CodeFieldReferenceExpression.cs
- ContractBase.cs
- VisualBasicDesignerHelper.cs
- QueryCursorEventArgs.cs
- HttpConfigurationContext.cs
- TypeUsage.cs
- CommandField.cs
- SafeBitVector32.cs
- ControlValuePropertyAttribute.cs
- Formatter.cs
- XmlDesigner.cs
- SchemaImporterExtensionsSection.cs
- ImplicitInputBrush.cs
- EdmRelationshipRoleAttribute.cs
- FillRuleValidation.cs
- HttpAsyncResult.cs
- ListManagerBindingsCollection.cs
- remotingproxy.cs
- IsolatedStorageFilePermission.cs
- ProfessionalColors.cs
- GCHandleCookieTable.cs
- Polygon.cs
- HexParser.cs
- TimeoutValidationAttribute.cs
- XslVisitor.cs
- DialogWindow.cs
- PartitionerStatic.cs
- DocumentCollection.cs
- Int32RectConverter.cs
- WebReference.cs
- JsonCollectionDataContract.cs
- PropertyDescriptorCollection.cs
- FontNamesConverter.cs
- ImageFormat.cs
- SqlFormatter.cs
- wgx_render.cs
- FontFamily.cs
- UIElementParagraph.cs
- ShaperBuffers.cs
- CellTreeNodeVisitors.cs
- MetadataItemSerializer.cs
- PageVisual.cs
- JsonReader.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- EntityDataSourceContainerNameConverter.cs
- SimpleFieldTemplateUserControl.cs
- XD.cs
- BitmapSource.cs
- HtmlTable.cs
- PointConverter.cs
- StrokeIntersection.cs
- Perspective.cs
- ActivityScheduledRecord.cs
- Receive.cs
- RefreshPropertiesAttribute.cs