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
- DefaultSerializationProviderAttribute.cs
- SystemIPGlobalProperties.cs
- TdsRecordBufferSetter.cs
- IPGlobalProperties.cs
- BamlStream.cs
- AuthenticationModulesSection.cs
- Subset.cs
- EntityDataSourceWizardForm.cs
- WindowsFormsHost.cs
- BaseDataList.cs
- SqlBuilder.cs
- FacetEnabledSchemaElement.cs
- SettingsPropertyWrongTypeException.cs
- CustomErrorsSection.cs
- PageHandlerFactory.cs
- DataGridViewEditingControlShowingEventArgs.cs
- TokenFactoryBase.cs
- TextServicesDisplayAttributePropertyRanges.cs
- BatchServiceHost.cs
- HttpWebResponse.cs
- Rotation3DAnimation.cs
- SafeNativeMethodsMilCoreApi.cs
- ChannelSinkStacks.cs
- ZipIOExtraFieldElement.cs
- ChannelDemuxer.cs
- HtmlGenericControl.cs
- ObjectReaderCompiler.cs
- XamlGridLengthSerializer.cs
- ExtentKey.cs
- FuncTypeConverter.cs
- Translator.cs
- ThreadAbortException.cs
- FragmentQueryKB.cs
- GuidTagList.cs
- HyperLinkField.cs
- CommandConverter.cs
- ServiceDescription.cs
- CharacterMetrics.cs
- UserControlBuildProvider.cs
- ParallelRangeManager.cs
- ShapingWorkspace.cs
- DeviceContexts.cs
- DocumentViewer.cs
- TextBounds.cs
- DateTimeValueSerializerContext.cs
- RegexReplacement.cs
- SiteMapProvider.cs
- mongolianshape.cs
- WebPartZoneCollection.cs
- CssTextWriter.cs
- CollectionViewGroupRoot.cs
- InvalidOleVariantTypeException.cs
- WmlSelectionListAdapter.cs
- IPHostEntry.cs
- SqlServer2KCompatibilityAnnotation.cs
- InternalConfigRoot.cs
- WebPartsPersonalization.cs
- SplineKeyFrames.cs
- DataServiceClientException.cs
- TaiwanCalendar.cs
- Canonicalizers.cs
- DataGridViewComboBoxEditingControl.cs
- DataTemplateKey.cs
- PathSegmentCollection.cs
- Utils.cs
- ProbeMatchesCD1.cs
- WebPartMenu.cs
- ImageAttributes.cs
- prefixendpointaddressmessagefilter.cs
- SerTrace.cs
- WeakReferenceEnumerator.cs
- StrokeCollection2.cs
- PropertyInfo.cs
- Context.cs
- ListViewDeletedEventArgs.cs
- WindowsTreeView.cs
- ExpandoObject.cs
- PageBreakRecord.cs
- DataControlButton.cs
- SystemIPGlobalStatistics.cs
- CreateUserWizardStep.cs
- ClientType.cs
- XmlSchemaComplexContentRestriction.cs
- AtomServiceDocumentSerializer.cs
- LayoutDump.cs
- TypeConverterAttribute.cs
- SqlUserDefinedAggregateAttribute.cs
- keycontainerpermission.cs
- ToolStripContentPanelDesigner.cs
- CriticalFinalizerObject.cs
- SelectionItemPattern.cs
- ViewBase.cs
- Baml2006SchemaContext.cs
- Delegate.cs
- RemotingConfigParser.cs
- DesignerView.xaml.cs
- CodeDomLoader.cs
- ConfigUtil.cs
- ControlValuePropertyAttribute.cs
- RichTextBox.cs