Mono.Debugger.Languages.TargetEnumObject.GetValue C# (CSharp) Method

GetValue() public method

public GetValue ( System.Thread thread ) : TargetObject
thread System.Thread
return TargetObject
        public TargetObject GetValue(Thread thread)
        {
            return (TargetObject) thread.ThreadServant.DoTargetAccess (
                delegate (TargetMemoryAccess target) {
                    return Type.Value.Type.GetObject (target, Location);
            });
        }

Usage Example

Exemplo n.º 1
0
        protected void FormatEnum(Thread target, TargetEnumObject eobj)
        {
            TargetObject evalue = eobj.GetValue (target);
            TargetFundamentalObject fobj = evalue as TargetFundamentalObject;

            if ((DisplayFormat == DisplayFormat.HexaDecimal) || (fobj == null)) {
                FormatObjectRecursed (target, evalue, true);
                return;
            }

            object value = fobj.GetObject (target);

            SortedList members = new SortedList ();
            foreach (TargetEnumInfo field in eobj.Type.Members)
                members.Add (field.Name, field.ConstValue);

            if (!eobj.Type.IsFlagsEnum) {
                foreach (DictionaryEntry entry in members) {
                    if (entry.Value.Equals (value)) {
                        Append ((string) entry.Key);
                        return;
                    }
                }
            } else if (value is ulong) {
                bool first = true;
                ulong the_value = (ulong) value;
                foreach (DictionaryEntry entry in members) {
                    ulong fvalue = System.Convert.ToUInt64 (entry.Value);
                    if ((the_value & fvalue) != fvalue)
                        continue;
                    if (!first) {
                        Append (" | ");
                        CheckLineWrap ();
                    }
                    first = false;
                    Append ((string) entry.Key);
                }
                if (!first)
                    return;
            } else {
                bool first = true;
                long the_value = System.Convert.ToInt64 (value);
                foreach (DictionaryEntry entry in members) {
                    long fvalue = System.Convert.ToInt64 (entry.Value);
                    if ((the_value & fvalue) != fvalue)
                        continue;
                    if (!first) {
                        Append (" | ");
                        CheckLineWrap ();
                    }
                    first = false;
                    Append ((string) entry.Key);
                }
                if (!first)
                    return;
            }

            FormatObjectRecursed (target, fobj, true);
        }