コード例 #1
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
 /// <summary>
 ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
 /// </summary>
 /// <param name="fileName"> asis </param>
 /// <param name="lineNr"> asis </param>
 /// <param name="colNr"> asis </param>
 /// <param name="tag"> asis </param>
 /// <returns> the "fileName(lineNr,colNr): tag: " string </returns>
 public static string FilePosn
 (
     string fileName,
     int lineNr,
     int colNr,
     FilePositionTag tag
 )
 => FilePosn(fileName, lineNr, colNr, lineNr, colNr, tag);
コード例 #2
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 /// <summary>
 ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
 /// </summary>
 /// <param name="fileName"> asis </param>
 /// <param name="lineNr"> asis </param>
 /// <param name="colNr"> asis </param>
 /// <param name="tag"> asis </param>
 /// <returns> the "fileName(lineNr,colNr): tag: " string </returns>
 public static string FilePosn
     (
     string fileName,
     int lineNr,
     int colNr,
     FilePositionTag tag
     )
     => FilePosn(fileName, lineNr, colNr, lineNr, colNr, tag);
コード例 #3
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
        /// <summary>
        ///     creates a string to inspect the method call contained in current call stack
        /// </summary>
        /// <param name="stackFrameDepth"> the index of stack frame </param>
        /// <param name="tag"> </param>
        /// <param name="showParam"> controls if parameter list is appended </param>
        /// <returns> string to inspect the method call </returns>
        public static string MethodHeader
        (
            FilePositionTag tag = FilePositionTag.Debug,
            bool showParam      = false,
            int stackFrameDepth = 0)
        {
            var sf = new StackTrace(true).GetFrame(stackFrameDepth + 1);

            return(FilePosn(sf, tag) + DumpMethod(sf.GetMethod(), showParam));
        }
コード例 #4
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 /// <summary>
 ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
 /// </summary>
 /// <param name="fileName"> asis </param>
 /// <param name="lineNr"> asis </param>
 /// <param name="colNr"> asis </param>
 /// <param name="colNrEnd"></param>
 /// <param name="tag"> asis </param>
 /// <param name="lineNrEnd"></param>
 /// <returns> the "fileName(lineNr,colNr): tag: " string </returns>
 public static string FilePosn
     (
     string fileName,
     int lineNr,
     int colNr,
     int lineNrEnd,
     int colNrEnd,
     FilePositionTag tag)
 {
     var tagText = tag.ToString();
     return FilePosn(fileName, lineNr, colNr, lineNrEnd, colNrEnd, tagText);
 }
コード例 #5
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 /// <summary>
 ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
 /// </summary>
 /// <param name="sf"> the stack frame where the location is stored </param>
 /// <param name="tag"> </param>
 /// <returns> the "FileName(LineNr,ColNr): tag: " string </returns>
 public static string FilePosn(this StackFrame sf, FilePositionTag tag)
 {
     if(sf.GetFileLineNumber() == 0)
         return "<nofile> " + tag;
     return FilePosn
         (
             sf.GetFileName(),
             sf.GetFileLineNumber() - 1,
             sf.GetFileColumnNumber(),
             tag
         );
 }
コード例 #6
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
        /// <summary>
        ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
        /// </summary>
        /// <param name="fileName"> asis </param>
        /// <param name="lineNr"> asis </param>
        /// <param name="colNr"> asis </param>
        /// <param name="colNrEnd"></param>
        /// <param name="tag"> asis </param>
        /// <param name="lineNrEnd"></param>
        /// <returns> the "fileName(lineNr,colNr): tag: " string </returns>
        public static string FilePosn
        (
            string fileName,
            int lineNr,
            int colNr,
            int lineNrEnd,
            int colNrEnd,
            FilePositionTag tag)
        {
            var tagText = tag.ToString();

            return(FilePosn(fileName, lineNr, colNr, lineNrEnd, colNrEnd, tagText));
        }
コード例 #7
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
 /// <summary>
 ///     creates the file(line,col) string to be used with "Edit.GotoNextLocation" command of IDE
 /// </summary>
 /// <param name="sf"> the stack frame where the location is stored </param>
 /// <param name="tag"> </param>
 /// <returns> the "FileName(LineNr,ColNr): tag: " string </returns>
 public static string FilePosn(this StackFrame sf, FilePositionTag tag)
 {
     if (sf.GetFileLineNumber() == 0)
     {
         return("<nofile> " + tag);
     }
     return(FilePosn
            (
                sf.GetFileName(),
                sf.GetFileLineNumber() - 1,
                sf.GetFileColumnNumber(),
                tag
            ));
 }
コード例 #8
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
        public static string StackTrace(FilePositionTag tag, int stackFrameDepth = 0)
        {
            var stackTrace = new StackTrace(true);
            var result     = "";

            for (var i = stackFrameDepth + 1; i < stackTrace.FrameCount; i++)
            {
                var stackFrame = stackTrace.GetFrame(i);
                var filePosn   = FilePosn(stackFrame, tag)
                                 + DumpMethod(stackFrame.GetMethod(), false);
                result += "\n" + filePosn;
            }
            return(result);
        }
コード例 #9
0
ファイル: Tracer.cs プロジェクト: hahoyer/factorio
        /// <summary>
        ///     write a line to debug output, flagged with FileName(LineNr,ColNr): Method (without parameter list)
        /// </summary>
        /// <param name="s"> the text </param>
        /// <param name="flagText"> </param>
        /// <param name="showParam"></param>
        /// <param name="stackFrameDepth"> The stack frame depth. </param>
        public static void FlaggedLine
        (
            string s,
            FilePositionTag flagText = FilePositionTag.Debug,
            bool showParam           = false,
            int stackFrameDepth      = 0)
        {
            var methodHeader = MethodHeader
                               (
                flagText,
                stackFrameDepth: stackFrameDepth + 1,
                showParam: showParam);

            Line(methodHeader + " " + s);
        }
コード例 #10
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 public static string MethodHeader(int oldStackFrameDepth, FilePositionTag tag = FilePositionTag.Debug, bool showParam = false)
 {
     var sf = new StackTrace(true).GetFrame(oldStackFrameDepth + 1);
     return FilePosn(sf, tag) + DumpMethod(sf.GetMethod(), showParam);
 }
コード例 #11
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 /// <summary>
 ///     write a line to debug output, flagged with FileName(LineNr,ColNr): Method (without parameter list)
 /// </summary>
 /// <param name="s"> the text </param>
 /// <param name="flagText"> </param>
 /// <param name="showParam"></param>
 /// <param name="stackFrameDepth"> The stack frame depth. </param>
 public static void FlaggedLine(string s, FilePositionTag flagText = FilePositionTag.Debug, bool showParam = false, int stackFrameDepth = 0)
 {
     Line(MethodHeader(flagText, stackFrameDepth: stackFrameDepth + 1, showParam:showParam) + " " + s);
 }
コード例 #12
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 public static string StackTrace(FilePositionTag tag, int stackFrameDepth = 0) 
 {
     var stackTrace = new StackTrace(true);
     var result = "";
     for(var i = stackFrameDepth + 1; i < stackTrace.FrameCount; i++)
     {
         var stackFrame = stackTrace.GetFrame(i);
         var filePosn = FilePosn(stackFrame, tag) + DumpMethod(stackFrame.GetMethod(), false);
         result += "\n" + filePosn;
     }
     return result;
 }
コード例 #13
0
ファイル: Tracer.cs プロジェクト: hahoyer/HWClassLibrary.cs
 public static string StackTrace(FilePositionTag tag) { return StackTrace(1, tag); }