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
- Win32.cs
- TextOutput.cs
- DataErrorValidationRule.cs
- FieldNameLookup.cs
- MenuCommand.cs
- XmlSerializationWriter.cs
- ArgumentOutOfRangeException.cs
- HtmlTextArea.cs
- ComplexType.cs
- PersonalizablePropertyEntry.cs
- MonitorWrapper.cs
- DiscoveryUtility.cs
- EventLogQuery.cs
- PropertyEmitterBase.cs
- NullableFloatSumAggregationOperator.cs
- DataListItem.cs
- CompilerGlobalScopeAttribute.cs
- TextComposition.cs
- DigestTraceRecordHelper.cs
- UnmanagedMemoryStream.cs
- LinqDataSourceDeleteEventArgs.cs
- ScrollBarRenderer.cs
- SendKeys.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- DiagnosticsConfiguration.cs
- WindowsRegion.cs
- RegexWorker.cs
- FormViewPageEventArgs.cs
- fixedPageContentExtractor.cs
- ScrollProviderWrapper.cs
- RawUIStateInputReport.cs
- ReadOnlyCollection.cs
- TrackingStringDictionary.cs
- NumericPagerField.cs
- ResourceKey.cs
- CheckBoxField.cs
- XmlIterators.cs
- DataSetMappper.cs
- Misc.cs
- BindingListCollectionView.cs
- BamlResourceDeserializer.cs
- FlowPanelDesigner.cs
- WebPermission.cs
- HGlobalSafeHandle.cs
- ItemContainerGenerator.cs
- ExpressionConverter.cs
- ProxyWebPartConnectionCollection.cs
- DataTablePropertyDescriptor.cs
- ProxyWebPartManager.cs
- ConfigurationManagerInternalFactory.cs
- SizeValueSerializer.cs
- Span.cs
- DesignerDataParameter.cs
- X509AsymmetricSecurityKey.cs
- OracleInfoMessageEventArgs.cs
- SqlWriter.cs
- AttachedAnnotation.cs
- ScriptingScriptResourceHandlerSection.cs
- SafeNativeMethods.cs
- TypeReference.cs
- CollectionViewGroupRoot.cs
- PropertyNames.cs
- RadioButtonBaseAdapter.cs
- KeyMatchBuilder.cs
- BuiltInExpr.cs
- ApplicationServiceHelper.cs
- MultiSelector.cs
- CalendarDateRangeChangingEventArgs.cs
- DataGridViewColumnCollectionEditor.cs
- Clause.cs
- InputReport.cs
- serverconfig.cs
- SessionStateSection.cs
- PropertyEmitterBase.cs
- Win32Native.cs
- EntityDataSourceContainerNameItem.cs
- VectorConverter.cs
- SequentialWorkflowRootDesigner.cs
- XDeferredAxisSource.cs
- XmlSchemaInfo.cs
- Exceptions.cs
- WebPartsPersonalizationAuthorization.cs
- InputBuffer.cs
- StackOverflowException.cs
- BamlMapTable.cs
- FileDialog.cs
- SecurityElement.cs
- CodeTypeConstructor.cs
- AffineTransform3D.cs
- XPathDescendantIterator.cs
- BidOverLoads.cs
- JoinCqlBlock.cs
- CoTaskMemUnicodeSafeHandle.cs
- ExpandedWrapper.cs
- ImageListStreamer.cs
- WinOEToolBoxItem.cs
- DataControlFieldCell.cs
- XPathAxisIterator.cs
- DataGridViewDataErrorEventArgs.cs
- VectorKeyFrameCollection.cs