using System; using System.Collections.Generic; namespace SharpCompress.Compressor.LZMA { internal static class Log { private static Stack _indent = new Stack(); 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; } } }