SymbolDocumentGenerator.cs source code in C# .NET

Source code for the .NET framework in C#



/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Compiler / SymbolDocumentGenerator.cs / 1305376 / SymbolDocumentGenerator.cs

                            /* **************************************************************************** 
 * Copyright (c) Microsoft Corporation.
 * This source code is subject to terms and conditions of the Microsoft Public License. A 
 * copy of the license can be found in the License.html file at the root of this distribution. If
 * you cannot locate the  Microsoft Public License, please send an email to 
 * By using this source code in any fashion, you are agreeing to be bound 
 * by the terms of the Microsoft Public License.
 * You must not remove this notice, or any other, from this software.
 * ***************************************************************************/ 

using ILGenerator = System.Linq.Expressions.Compiler.OffsetTrackingILGenerator; 
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.SymbolStore;
using System.Linq.Expressions; 
using System.Linq.Expressions.Compiler;
using System.Reflection; 
using System.Reflection.Emit; 

using System.Core;

namespace System.Runtime.CompilerServices { 
    /// Generator of PDB debugging information for expression trees. 
    internal sealed class SymbolDocumentGenerator : DebugInfoGenerator {
        private Dictionary _symbolWriters; 

        private ISymbolDocumentWriter GetSymbolWriter(MethodBuilder method, SymbolDocumentInfo document) {
            ISymbolDocumentWriter result;
            if (_symbolWriters == null) { 
                _symbolWriters = new Dictionary();
            if (!_symbolWriters.TryGetValue(document, out result)) {
                result = ((ModuleBuilder)method.Module).DefineDocument(document.FileName, document.Language, document.LanguageVendor, SymbolGuids.DocumentType_Text); 
                _symbolWriters.Add(document, result);

            return result; 
        internal override void MarkSequencePoint(LambdaExpression method, MethodBase methodBase, ILGenerator ilg, DebugInfoExpression sequencePoint) { 
            MethodBuilder builder = methodBase as MethodBuilder;
            if (builder != null) { 
                ilg.MarkSequencePoint(GetSymbolWriter(builder, sequencePoint.Document), sequencePoint.StartLine, sequencePoint.StartColumn, sequencePoint.EndLine, sequencePoint.EndColumn);
        public override void MarkSequencePoint(LambdaExpression method, int ilOffset, DebugInfoExpression sequencePoint) {
            throw Error.PdbGeneratorNeedsExpressionCompiler(); 

        internal override void SetLocalName(LocalBuilder localBuilder, string name) { 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

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