Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / SqlClient / SqlGen / SymbolUsageManager.cs / 1305376 / SymbolUsageManager.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
namespace System.Data.SqlClient.SqlGen
{
///
/// Used for wrapping a boolean value as an object.
///
internal class BoolWrapper
{
internal bool Value {get; set;}
internal BoolWrapper()
{
this.Value = false;
}
}
///
/// Tracks the usage of symbols.
/// When registering a symbol with the usage manager if an input symbol is specified,
/// than the usage of the two is 'connected' - if one ever gets marked as used,
/// the other one becomes 'used' too.
///
internal class SymbolUsageManager
{
private readonly Dictionary optionalColumnUsage = new Dictionary();
internal bool ContainsKey(Symbol key)
{
return optionalColumnUsage.ContainsKey(key);
}
internal bool TryGetValue(Symbol key, out bool value)
{
BoolWrapper wrapper;
if (optionalColumnUsage.TryGetValue(key, out wrapper))
{
value = wrapper.Value;
return true;
}
value = false;
return false;
}
internal void Add(Symbol sourceSymbol, Symbol symbolToAdd)
{
BoolWrapper wrapper;
if (sourceSymbol == null || !this.optionalColumnUsage.TryGetValue(sourceSymbol, out wrapper))
{
wrapper = new BoolWrapper();
}
this.optionalColumnUsage.Add(symbolToAdd, wrapper);
}
internal void MarkAsUsed(Symbol key)
{
if (optionalColumnUsage.ContainsKey(key))
{
optionalColumnUsage[key].Value = true;
}
}
internal bool IsUsed(Symbol key)
{
return optionalColumnUsage[key].Value;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GridViewCommandEventArgs.cs
- ObjectManager.cs
- PixelFormatConverter.cs
- _SslSessionsCache.cs
- BufferedWebEventProvider.cs
- DatagridviewDisplayedBandsData.cs
- Opcode.cs
- BamlLocalizer.cs
- DockPattern.cs
- SQLGuid.cs
- DataErrorValidationRule.cs
- ZipIOLocalFileBlock.cs
- SimpleWebHandlerParser.cs
- CompressStream.cs
- ConsumerConnectionPoint.cs
- FullTextState.cs
- DataGridCaption.cs
- ParameterCollection.cs
- RadioButtonBaseAdapter.cs
- Content.cs
- XmlQueryRuntime.cs
- SqlPersonalizationProvider.cs
- XmlValueConverter.cs
- WizardStepBase.cs
- Win32.cs
- Color.cs
- TypeDescriptionProvider.cs
- precedingsibling.cs
- HtmlContainerControl.cs
- TransactionsSectionGroup.cs
- EventProviderWriter.cs
- NonNullItemCollection.cs
- SrgsToken.cs
- SafeNativeMethods.cs
- LogSwitch.cs
- ReliableDuplexSessionChannel.cs
- SharedStatics.cs
- TextProperties.cs
- ACL.cs
- ColorInterpolationModeValidation.cs
- RawStylusActions.cs
- TimerElapsedEvenArgs.cs
- ContainerAction.cs
- DBSchemaRow.cs
- RelOps.cs
- CodeThrowExceptionStatement.cs
- SortFieldComparer.cs
- HtmlInputButton.cs
- BamlRecordHelper.cs
- ControlBindingsCollection.cs
- SystemParameters.cs
- ActivitySurrogate.cs
- WebHeaderCollection.cs
- TableLayoutSettings.cs
- PhysicalAddress.cs
- XpsInterleavingPolicy.cs
- TraceHelpers.cs
- FixedTextSelectionProcessor.cs
- XmlWellformedWriter.cs
- NumericExpr.cs
- DrawingContextWalker.cs
- TypeNameConverter.cs
- DBCommand.cs
- ElementFactory.cs
- DES.cs
- UpdateCommand.cs
- SchemaTableColumn.cs
- WasEndpointConfigContainer.cs
- DoubleAnimationClockResource.cs
- WebPartDisplayModeCollection.cs
- PackageDigitalSignature.cs
- DataRelationPropertyDescriptor.cs
- PKCS1MaskGenerationMethod.cs
- login.cs
- DispatcherEventArgs.cs
- ButtonFieldBase.cs
- DefaultBindingPropertyAttribute.cs
- InvalidPrinterException.cs
- latinshape.cs
- TextContainerChangedEventArgs.cs
- SEHException.cs
- ResourceDefaultValueAttribute.cs
- ISAPIWorkerRequest.cs
- DataGridToolTip.cs
- CanExecuteRoutedEventArgs.cs
- StringUtil.cs
- Encoder.cs
- ReadOnlyDictionary.cs
- Event.cs
- serverconfig.cs
- SafeRegistryHandle.cs
- CssTextWriter.cs
- CheckBox.cs
- ConfigurationValue.cs
- CodeGenerator.cs
- PropertyGrid.cs
- HGlobalSafeHandle.cs
- InkCanvas.cs
- Unit.cs
- PersonalizableTypeEntry.cs