/[RomCheater]/trunk/RomCheater.Logging/logger.cs
ViewVC logotype

Diff of /trunk/RomCheater.Logging/logger.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 95 by william, Wed May 9 22:37:17 2012 UTC revision 151 by william, Mon May 28 00:17:16 2012 UTC
# Line 14  namespace RomCheater.Logging Line 14  namespace RomCheater.Logging
14      }      }
15    
16    
17      #region MesageLogger      #region loggerflags
18      [Flags]      public class loggerflagsbase<TValue>
19      public enum loggerflags          where TValue : IConvertible
20      {      {
21          NONE = 0x0000,              // 000           static loggerflagsbase()
22          INFO = 0x0001,              // 001          {
23          DEBUG = 0x0002,             // 010              value_pairs = new Dictionary<TValue, EnumNameValuePair<TValue>>();
24          ERROR= 0x0004,              // 100              name_pairs = new Dictionary<string, EnumNameValuePair<TValue>>();
25          DEFAULT = INFO | ERROR | DEBUG,              
26          ALL = DEFAULT,              init_dicts();
27            }
28            protected loggerflagsbase()
29            {
30                CurrentValue = NONE;
31            }
32            //protected loggerflags(ushort t) : this() { CurrentValue = new EnumNameValuePair< ushort>("", t); }
33            protected loggerflagsbase(EnumNameValuePair< TValue> t) { CurrentValue = t; }
34            protected loggerflagsbase(loggerflagsbase<TValue> t) { this.CurrentValue = t.CurrentValue; }
35            private static void init_dicts()
36            {
37                value_pairs = new Dictionary<TValue, EnumNameValuePair< TValue>>();
38                name_pairs = new Dictionary<string, EnumNameValuePair< TValue>>();
39                add_dict_entry(NONE);
40                add_dict_entry(INFO);
41                add_dict_entry(DEBUG);
42                add_dict_entry(ERROR);
43                add_dict_entry(VERBOSE_DEBUG);
44                add_dict_entry(VERBOSE_ERROR);
45                add_dict_entry(DEFAULT);
46                add_dict_entry(ALL);
47            }
48    
49            private static void add_dict_entry(EnumNameValuePair<TValue> value)
50            {
51                try
52                {
53                    value_pairs.Add(value, value);
54                    name_pairs.Add(value, value);
55                }
56                catch { }
57            }
58    
59            #region implicit operators
60            public static implicit operator loggerflagsbase<TValue>(EnumNameValuePair<TValue> t) { return new loggerflagsbase<TValue>(t); }
61            public static implicit operator EnumNameValuePair<TValue>(loggerflagsbase<TValue> t) { return new loggerflagsbase<TValue>(t); }
62            public static implicit operator loggerflagsbase<TValue>(TValue t)
63            {
64                foreach (KeyValuePair<TValue, EnumNameValuePair<TValue>> pair in value_pairs) { EnumNameValuePair<TValue> l = pair.Value; if (l.Value.Equals(t)) { return new loggerflagsbase<TValue>(l); } }
65                return loggerflagsbase<TValue>.NONE;
66            }
67            public static implicit operator TValue(loggerflagsbase<TValue> t) { return t.CurrentValue.Value; }
68            public static implicit operator string(loggerflagsbase<TValue> t) { return t.CurrentValue.Name; }
69    
70            #region operator overloads
71            public static bool operator ==(loggerflagsbase<TValue> x, loggerflagsbase<TValue> y) { return x.CurrentValue == y.CurrentValue; }
72            public static bool operator !=(loggerflagsbase<TValue> x, loggerflagsbase<TValue> y) { return x.CurrentValue != y.CurrentValue; }
73            public override bool Equals(object obj)
74            {
75                loggerflags t = (obj as loggerflags);
76                if (t == null) return false;
77                return this.CurrentValue.Equals(t);
78            }
79            public override int GetHashCode()
80            {
81                return CurrentValue.GetHashCode();
82            }
83            public override string ToString()
84            {
85                
86                return CurrentValue.ToString();
87            }
88            #endregion
89            #endregion
90            #region binary bit flags
91            public static EnumNameValuePair<TValue> NONE = new EnumNameValuePair<TValue>("NONE", Binary<TValue>.ToValue("00000"));
92            public static EnumNameValuePair<TValue> INFO = new EnumNameValuePair<TValue>("INFO", Binary<TValue>.ToValue("00001"));
93            public static EnumNameValuePair<TValue> DEBUG = new EnumNameValuePair<TValue>("DEBUG", Binary<TValue>.ToValue("00010"));
94            public static EnumNameValuePair<TValue> ERROR = new EnumNameValuePair<TValue>("ERROR", Binary<TValue>.ToValue("00100"));
95            public static EnumNameValuePair<TValue> VERBOSE_DEBUG = new EnumNameValuePair<TValue>("VERBOSE_DEBUG", Binary<TValue>.ToValue("01000"));
96            public static EnumNameValuePair<TValue> VERBOSE_ERROR = new EnumNameValuePair<TValue>("VERBOSE_ERROR", Binary<TValue>.ToValue("10000"));
97            public static EnumNameValuePair<TValue> DEFAULT = new EnumNameValuePair<TValue>("DEFAULT", EnumNameValuePair<TValue>.bitwise_or(INFO,DEBUG,ERROR));
98            public static EnumNameValuePair<TValue> ALL = new EnumNameValuePair<TValue>("ALL", EnumNameValuePair<TValue>.bitwise_or(DEFAULT, VERBOSE_DEBUG, VERBOSE_ERROR));
99            #endregion
100    
101            protected static Dictionary<TValue, EnumNameValuePair<TValue>> value_pairs;
102            protected static Dictionary<string, EnumNameValuePair<TValue>> name_pairs;
103            private EnumNameValuePair<TValue> CurrentValue { get; set; }
104    
105            public bool HasFlag(TValue flag)
106            {
107                bool hasflag = false;
108                TValue value = this.CurrentValue;
109                if (!(EnumNameValuePair<TValue>.bitwise_and(flag, value)).Equals(value))
110                    hasflag = true;
111                return hasflag;
112            }
113    
114            public static List<TValue> GetValues() { return value_pairs.Keys.ToList(); }
115            public static List<string> GetNames() { return name_pairs.Keys.ToList(); }
116    
117            public string Name { get { return CurrentValue.Name; } }
118            public TValue Value { get { return CurrentValue.Value; } }
119        }
120        //[Flags]
121        public class loggerflags : loggerflagsbase<ushort>
122        {
123              protected loggerflags() :base()        {        }
124            //protected loggerflags(ushort t) : this() { CurrentValue = new EnumNameValuePair< ushort>("", t); }
125              protected loggerflags(EnumNameValuePair<ushort> t) : base(t) { }
126              protected loggerflags(loggerflagsbase<ushort> t) : base(t) { }
127            #region implicit operators
128              public static implicit operator loggerflags(EnumNameValuePair<ushort> t) { return new loggerflags(t); }
129              public static implicit operator EnumNameValuePair<ushort>(loggerflags t) { return new loggerflags(t.Value); }
130              public static implicit operator ushort(loggerflags t) { return t.Value; }
131              public static implicit operator loggerflags(ushort t) { return new loggerflags(t); }
132              public static implicit operator string(loggerflags t) { return t.Name; }
133            #endregion
134    
135      }      }
136        
137      public static class logger      public static class logger
138      {      {
139          private static loggerflags logging_flags;          private static loggerflags logging_flags;
140          static logger() { SetLoggingFlags(loggerflags.DEFAULT); }          static logger() { SetLoggingFlags(loggerflags.DEFAULT); }
141          public static void SetLoggingFlags(loggerflags flags) { logging_flags = flags; }          public static void SetLoggingFlags(loggerflags flags) { logging_flags = flags; }
142            public static loggerflags GetLoggingFlags() { return logging_flags; }
143          #region sub-classes          #region sub-classes
144          private static string CreateTimeStamp()          private static string CreateTimeStamp()
145          {          {
# Line 50  namespace RomCheater.Logging Line 160  namespace RomCheater.Logging
160              public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.DEBUG)) { xlogger.Write(CreateNewFormat(format), args); } }              public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.DEBUG)) { xlogger.Write(CreateNewFormat(format), args); } }
161              public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.DEBUG)) { xlogger.WriteLine(CreateNewFormat(format), args); } }              public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.DEBUG)) { xlogger.WriteLine(CreateNewFormat(format), args); } }
162          }          }
163            public static class VerboseDebug
164            {
165                private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(VERBOSE DEBUG) " + format; }
166                public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.VERBOSE_DEBUG)) { xlogger.Write(CreateNewFormat(format), args); } }
167                public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.VERBOSE_DEBUG)) { xlogger.WriteLine(CreateNewFormat(format), args); } }
168            }
169          public static class Error          public static class Error
170          {          {
171              private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(ERROR) " + format; }              private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(ERROR) " + format; }
172              public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.ERROR)) { xlogger.Write(CreateNewFormat(format), args); } }              public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.ERROR)) { xlogger.Write(CreateNewFormat(format), args); } }
173              public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.ERROR)) { xlogger.WriteLine(CreateNewFormat(format), args); } }              public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.ERROR)) { xlogger.WriteLine(CreateNewFormat(format), args); } }
174          }          }
175            public static class VerboseError
176            {
177                private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(VERBOSE ERROR) " + format; }
178                public static void Write(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.VERBOSE_ERROR)) { xlogger.Write(CreateNewFormat(format), args); } }
179                public static void WriteLine(string format, params object[] args) { if (logging_flags.HasFlag(loggerflags.VERBOSE_ERROR)) { xlogger.WriteLine(CreateNewFormat(format), args); } }
180            }
181          #region Force logging          #region Force logging
182          public static class ForceLog          public static class ForceLog
183          {          {
184              public static class Info              public static class Info
185              {              {
186                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(INFO) " + format; }                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(FORCED INFO) " + format; }
187                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }
188                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }
189              }              }
190              public static class Debug              public static class Debug
191              {              {
192                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(DEBUG) " + format; }                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(FORCED DEBUG) " + format; }
193                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }
194                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }
195              }              }
196              public static class Error              public static class Error
197              {              {
198                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(ERROR) " + format; }                  private static string CreateNewFormat(string format) { return "    " + CreateTimeStamp() + "(FORCED ERROR) " + format; }
199                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }                  public static void Write(string format, params object[] args) { xlogger.Write(CreateNewFormat(format), args); }
200                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }                  public static void WriteLine(string format, params object[] args) { xlogger.WriteLine(CreateNewFormat(format), args); }
201              }              }

Legend:
Removed from v.95  
changed lines
  Added in v.151

  ViewVC Help
Powered by ViewVC 1.1.22