/// @brief Create a new Watch for a %Cog memory location.
 /// @param cog Reference to %Cog to inspect its memory.
 /// @param name Name to associate the Watch.
 /// @param address Memory address to inspect.
 public MemWatcher(Cog cog, string name, uint address)
 {
     IsCogBased = true;
     _chip      = null;
     _cog       = cog;
     Addr       = address; //this assignment validate the value or throw an exception
     //CogSpecialAddress tmp;
     //if (Enum.IsDefined(typeof(CogSpecialAddress), Addr) &&
     //    Enum.TryParse(Addr, out tmp))
     //{
     //    specialAddr = tmp;
     //    Name = specialAddr.ToString();
     //}
     Name = name;
     if (string.IsNullOrEmpty(Name))
     {
         Name = name;
     }
     Value         = cog.ReadLong(Addr);
     ComparedValue = 0;
     isStoppedBy   = false;
     Mode          = StopMode.none;
 }
 private uint UpdatedValue()
 {
     return(Value = (IsCogBased) ?
                    _cog.ReadLong(_addr) :
                    _chip.ReadLong(_addr));
 }