ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater.Logging/logger.cs
(Generate patch)

Comparing trunk/RomCheater.Logging/logger.cs (file contents):
Revision 268 by william, Sun Jun 3 19:47:47 2012 UTC vs.
Revision 269 by william, Sun Jun 3 20:40:36 2012 UTC

# Line 61 | Line 61 | namespace RomCheater.Logging
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;
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 >            List<string> pairs = new List<string>();
67 >            StringBuilder builder = new StringBuilder();
68 >            foreach (KeyValuePair<TValue, EnumNameValuePair<TValue>> pair in value_pairs)
69 >            {
70 >                EnumNameValuePair<TValue> enum_pair = pair.Value;
71 >                if (HasFlag(pair.Value, t) && enum_pair != NONE)
72 >                {
73 >                    pairs.Add(enum_pair);
74 >                }
75 >            }
76 >            if (pairs.Count == 0)
77 >            {
78 >                return NONE;
79 >            }
80 >            else
81 >            {
82 >                int count = 0;
83 >                foreach (string pair in pairs)
84 >                {
85 >                    if (count == 0)
86 >                    {
87 >                        builder.AppendLine(pair);
88 >                    }
89 >                    else
90 >                    {
91 >                        builder.AppendFormat(" | {0}",pair);
92 >                    }
93 >                    count++;
94 >                }
95 >                loggerflagsbase<TValue> rVal = new loggerflagsbase<TValue>(new EnumNameValuePair<TValue>(builder.ToString(), t));
96 >                return rVal;
97 >            }
98          }
99          public static implicit operator TValue(loggerflagsbase<TValue> t) { return t.CurrentValue.Value; }
100          public static implicit operator string(loggerflagsbase<TValue> t) { return t.CurrentValue.Name; }
# Line 107 | Line 139 | namespace RomCheater.Logging
139          {
140              bool hasflag = false;
141              TValue value = this.CurrentValue;
142 <            if (!(EnumNameValuePair<TValue>.bitwise_and(flag, value)).Equals(value))
142 >            if ((EnumNameValuePair<TValue>.bitwise_and(flag, value)).Equals(flag))
143 >                hasflag = true;
144 >            return hasflag;
145 >        }
146 >        public static bool HasFlag(TValue flag, TValue compare)
147 >        {
148 >            bool hasflag = false;
149 >            TValue value = compare;
150 >            if ((EnumNameValuePair<TValue>.bitwise_and(flag, value)).Equals(flag))
151                  hasflag = true;
152              return hasflag;
153          }
114
154          public static List<TValue> GetValues() { return value_pairs.Keys.ToList(); }
155          public static List<string> GetNames() { return name_pairs.Keys.ToList(); }
156  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines