Files
sharpcompress/SharpCompress/Compressor/LZMA/Log.cs
2013-04-28 13:01:29 +01:00

91 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
namespace SharpCompress.Compressor.LZMA
{
internal static class Log
{
private static Stack<string> _indent = new Stack<string>();
private static bool _needsIndent = true;
static Log()
{
_indent.Push("");
}
public static void PushIndent(string indent = " ")
{
_indent.Push(_indent.Peek() + indent);
}
public static void PopIndent()
{
if (_indent.Count == 1)
throw new InvalidOperationException();
_indent.Pop();
}
private static void EnsureIndent()
{
if (_needsIndent)
{
_needsIndent = false;
#if !PORTABLE && !NETFX_CORE
System.Diagnostics.Debug.Write(_indent.Peek());
#endif
}
}
public static void Write(object value)
{
EnsureIndent();
#if !PORTABLE && !NETFX_CORE
System.Diagnostics.Debug.Write(value);
#endif
}
public static void Write(string text)
{
EnsureIndent();
#if !PORTABLE && !NETFX_CORE
System.Diagnostics.Debug.Write(text);
#endif
}
public static void Write(string format, params object[] args)
{
EnsureIndent();
#if !PORTABLE && !NETFX_CORE
System.Diagnostics.Debug.Write(string.Format(format, args));
#endif
}
public static void WriteLine()
{
System.Diagnostics.Debug.WriteLine("");
_needsIndent = true;
}
public static void WriteLine(object value)
{
EnsureIndent();
System.Diagnostics.Debug.WriteLine(value);
_needsIndent = true;
}
public static void WriteLine(string text)
{
EnsureIndent();
System.Diagnostics.Debug.WriteLine(text);
_needsIndent = true;
}
public static void WriteLine(string format, params object[] args)
{
EnsureIndent();
System.Diagnostics.Debug.WriteLine(string.Format(format, args));
_needsIndent = true;
}
}
}