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
- infer.cs
- DataSetViewSchema.cs
- WebPartsSection.cs
- XmlArrayItemAttributes.cs
- QilPatternVisitor.cs
- InputLanguage.cs
- ProviderUtil.cs
- HashCodeCombiner.cs
- DataServiceKeyAttribute.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ConfigurationStrings.cs
- HierarchicalDataTemplate.cs
- CodeDirectoryCompiler.cs
- clipboard.cs
- ProvidersHelper.cs
- UntrustedRecipientException.cs
- ComboBoxItem.cs
- SecurityState.cs
- SettingsSection.cs
- BaseValidatorDesigner.cs
- RemoteWebConfigurationHostServer.cs
- MarginsConverter.cs
- LogicalTreeHelper.cs
- SortKey.cs
- HtmlControlPersistable.cs
- EastAsianLunisolarCalendar.cs
- NullableDoubleMinMaxAggregationOperator.cs
- AudioStateChangedEventArgs.cs
- WebBrowserBase.cs
- SolidBrush.cs
- ToolboxItemAttribute.cs
- MailAddressParser.cs
- ThreadNeutralSemaphore.cs
- OdbcStatementHandle.cs
- XPathNavigator.cs
- SqlClientWrapperSmiStreamChars.cs
- KeyEvent.cs
- AnnotationHelper.cs
- X509Chain.cs
- DbCommandTree.cs
- SinglePageViewer.cs
- PropertyRef.cs
- DrawingAttributesDefaultValueFactory.cs
- StrokeCollection.cs
- MissingMemberException.cs
- BitHelper.cs
- BooleanProjectedSlot.cs
- Point3DAnimationBase.cs
- IdentityModelDictionary.cs
- ObjectFullSpanRewriter.cs
- UniqueIdentifierService.cs
- WmlCommandAdapter.cs
- OverflowException.cs
- PrinterUnitConvert.cs
- Identity.cs
- ListBoxItemAutomationPeer.cs
- RuleSettings.cs
- WindowsScrollBar.cs
- Interlocked.cs
- ConfigXmlElement.cs
- StylusPointPropertyUnit.cs
- ToolboxItemFilterAttribute.cs
- ProfileSection.cs
- SoapMessage.cs
- AbsoluteQuery.cs
- UshortList2.cs
- MenuItemStyleCollection.cs
- PathSegmentCollection.cs
- ResourcePool.cs
- WrappedKeySecurityToken.cs
- MatcherBuilder.cs
- XmlSyndicationContent.cs
- mda.cs
- RequestCachePolicy.cs
- HttpCookieCollection.cs
- DomNameTable.cs
- XmlObjectSerializerReadContextComplex.cs
- WebScriptEnablingBehavior.cs
- HtmlTable.cs
- Rotation3D.cs
- RegexTree.cs
- MediaPlayer.cs
- SocketElement.cs
- PropagatorResult.cs
- MenuItem.cs
- QueuePathDialog.cs
- WebPartDisplayMode.cs
- Errors.cs
- basenumberconverter.cs
- ContextStack.cs
- EntitySqlQueryState.cs
- MeasureItemEvent.cs
- SplitContainerDesigner.cs
- SafeThemeHandle.cs
- ContentWrapperAttribute.cs
- HijriCalendar.cs
- OperationInvokerBehavior.cs
- HtmlEncodedRawTextWriter.cs
- AssignDesigner.xaml.cs
- PersonalizationAdministration.cs