SymbolUsageManager.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK