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
- TextElementCollection.cs
- RichTextBox.cs
- AnimationTimeline.cs
- xsdvalidator.cs
- PasswordBox.cs
- SecurityPolicySection.cs
- TraceContext.cs
- SoapHelper.cs
- TrackingMemoryStream.cs
- ToolStripArrowRenderEventArgs.cs
- MemberAssignmentAnalysis.cs
- SqlFunctionAttribute.cs
- StorageInfo.cs
- MenuItemStyle.cs
- TextWriter.cs
- UiaCoreApi.cs
- PaperSize.cs
- CorrelationService.cs
- SettingsPropertyValueCollection.cs
- TiffBitmapEncoder.cs
- IconHelper.cs
- OleDbDataAdapter.cs
- TemplateBindingExtensionConverter.cs
- LoadWorkflowAsyncResult.cs
- StrokeSerializer.cs
- StoragePropertyMapping.cs
- StrokeNodeEnumerator.cs
- SiteMembershipCondition.cs
- TableItemPattern.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- XamlReaderHelper.cs
- RouteParser.cs
- BStrWrapper.cs
- ApplicationInterop.cs
- AppearanceEditorPart.cs
- InvalidAsynchronousStateException.cs
- SeekStoryboard.cs
- XmlUtilWriter.cs
- QueryStringParameter.cs
- SigningCredentials.cs
- ProtectedConfigurationSection.cs
- RoutedEventHandlerInfo.cs
- DataGridViewRowHeaderCell.cs
- CompilerError.cs
- ComplexType.cs
- WizardPanel.cs
- AnnotationElement.cs
- IndentedTextWriter.cs
- RoleManagerSection.cs
- DeclarationUpdate.cs
- HtmlInputReset.cs
- ItemsPresenter.cs
- messageonlyhwndwrapper.cs
- CollectionExtensions.cs
- SmtpClient.cs
- FastEncoderWindow.cs
- DataGridViewAdvancedBorderStyle.cs
- TransformerInfoCollection.cs
- DataServiceRequestException.cs
- recordstate.cs
- AstNode.cs
- XmlFormatExtensionAttribute.cs
- FormViewCommandEventArgs.cs
- TableItemStyle.cs
- FilterableAttribute.cs
- ToolboxItemFilterAttribute.cs
- StylusPointPropertyInfo.cs
- ConfigXmlComment.cs
- SQLDateTimeStorage.cs
- DateTimeOffset.cs
- XmlHierarchicalEnumerable.cs
- SessionPageStatePersister.cs
- BitmapInitialize.cs
- TagPrefixAttribute.cs
- DataRowChangeEvent.cs
- WebScriptClientGenerator.cs
- RuntimeConfigLKG.cs
- BlockUIContainer.cs
- PerfCounters.cs
- TraceInternal.cs
- sitestring.cs
- WebPartsSection.cs
- Font.cs
- ObjectDataSourceStatusEventArgs.cs
- WindowsGraphicsCacheManager.cs
- EditingCommands.cs
- ListSortDescriptionCollection.cs
- XmlStringTable.cs
- DoubleCollectionConverter.cs
- DesignerRegionMouseEventArgs.cs
- RepeatBehavior.cs
- PathNode.cs
- ColorBlend.cs
- OwnerDrawPropertyBag.cs
- XmlSchemaAttribute.cs
- Stylus.cs
- VisualTarget.cs
- RegexStringValidator.cs
- ToolStripDropDownItem.cs
- PerfService.cs