2011-01-23 18:27:26 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
2012-09-14 21:31:00 +00:00
|
|
|
|
using System.Globalization;
|
2011-01-23 18:27:26 +00:00
|
|
|
|
|
|
|
|
|
namespace BizHawk.MultiClient
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
|
2011-06-19 19:10:01 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// An object that represent a ram address and related properties
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class Watch
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
public enum TYPE { BYTE, WORD, DWORD, SEPARATOR };
|
|
|
|
|
public enum DISPTYPE { SIGNED, UNSIGNED, HEX };
|
|
|
|
|
public enum PREVDEF { LASTSEARCH, ORIGINAL, LASTFRAME, LASTCHANGE };
|
|
|
|
|
|
|
|
|
|
#region Constructors
|
|
|
|
|
|
2011-06-19 19:10:01 +00:00
|
|
|
|
public Watch()
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Address = 0;
|
|
|
|
|
Value = 0;
|
|
|
|
|
Type = TYPE.BYTE;
|
|
|
|
|
Signed = DISPTYPE.UNSIGNED;
|
|
|
|
|
BigEndian = true;
|
|
|
|
|
Notes = "";
|
|
|
|
|
Changecount = 0;
|
|
|
|
|
Prev = 0;
|
|
|
|
|
Original = 0;
|
|
|
|
|
LastChange = 0;
|
|
|
|
|
LastSearch = 0;
|
|
|
|
|
Deleted = false;
|
|
|
|
|
Domain = Global.Emulator.MainMemory;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Watch(Watch w)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Address = w.Address;
|
|
|
|
|
Value = w.Value;
|
|
|
|
|
Type = w.Type;
|
|
|
|
|
Signed = w.Signed;
|
|
|
|
|
BigEndian = w.BigEndian;
|
|
|
|
|
Notes = w.Notes;
|
|
|
|
|
Changecount = w.Changecount;
|
|
|
|
|
Prev = w.Prev;
|
|
|
|
|
Original = w.Original;
|
|
|
|
|
LastChange = w.LastChange;
|
|
|
|
|
LastSearch = w.LastSearch;
|
2012-09-10 02:03:24 +00:00
|
|
|
|
Domain = w.Domain;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Deleted = w.Deleted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Watch(MemoryDomain _domain, int _address, int _value, TYPE _type, DISPTYPE _disptype, bool _bigendian, string _notes)
|
|
|
|
|
{
|
|
|
|
|
Domain = _domain;
|
|
|
|
|
Address = _address;
|
|
|
|
|
Value = _value;
|
|
|
|
|
Type = _type;
|
|
|
|
|
Signed = _disptype;
|
|
|
|
|
BigEndian = _bigendian;
|
|
|
|
|
Notes = _notes;
|
|
|
|
|
Changecount = 0;
|
|
|
|
|
Prev = _value;
|
|
|
|
|
Original = _value;
|
|
|
|
|
LastChange = _value;
|
|
|
|
|
LastSearch = _value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Properties
|
|
|
|
|
|
|
|
|
|
public MemoryDomain Domain;
|
|
|
|
|
public int Address;
|
|
|
|
|
public int Value;
|
|
|
|
|
public int Prev;
|
|
|
|
|
public int Original;
|
|
|
|
|
public int LastChange;
|
|
|
|
|
public int LastSearch;
|
|
|
|
|
public TYPE Type;
|
|
|
|
|
public DISPTYPE Signed;
|
|
|
|
|
public bool BigEndian;
|
|
|
|
|
public string Notes;
|
|
|
|
|
public int Changecount;
|
|
|
|
|
public bool Deleted;
|
|
|
|
|
|
|
|
|
|
public int DiffPrev
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Value - Prev;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int DiffOriginal
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Value - Original;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int DiffLastChange
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Value - LastChange;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int DiffLastSearch
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return Value - LastSearch;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string ValueString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ValToString(Value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string PrevString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ValToString(Prev);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string OriginalString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ValToString(Original);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string LastChangeString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ValToString(LastChange);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string LastSearchString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ValToString(LastSearch);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string DiffPrevString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return DiffToString(Prev);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string DiffOriginalString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return DiffToString(Original);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string DiffLastChangeString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return DiffToString(LastChange);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string DiffLastSearchString
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return DiffToString(LastSearch);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public char TypeChar
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
switch (Type)
|
|
|
|
|
{
|
|
|
|
|
case TYPE.BYTE:
|
|
|
|
|
return 'b';
|
|
|
|
|
case TYPE.WORD:
|
|
|
|
|
return 'w';
|
|
|
|
|
case TYPE.DWORD:
|
|
|
|
|
return 'd';
|
|
|
|
|
case TYPE.SEPARATOR:
|
|
|
|
|
return 'S';
|
|
|
|
|
default:
|
|
|
|
|
return 'b'; //Just in case
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public char SignedChar
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
switch (Signed)
|
|
|
|
|
{
|
|
|
|
|
case DISPTYPE.SIGNED:
|
|
|
|
|
return 's';
|
|
|
|
|
case DISPTYPE.UNSIGNED:
|
|
|
|
|
return 'u';
|
|
|
|
|
case DISPTYPE.HEX:
|
|
|
|
|
return 'h';
|
|
|
|
|
default:
|
|
|
|
|
return 's'; //Just in case
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
2011-06-19 19:10:01 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
#region Public Methods
|
2011-06-19 19:10:01 +00:00
|
|
|
|
|
|
|
|
|
public bool SetTypeByChar(char c) //b = byte, w = word, d = dword
|
|
|
|
|
{
|
|
|
|
|
switch (c)
|
|
|
|
|
{
|
|
|
|
|
case 'b':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Type = TYPE.BYTE;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
case 'w':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Type = TYPE.WORD;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
case 'd':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Type = TYPE.DWORD;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
case 'S':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Type = TYPE.SEPARATOR;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool SetSignedByChar(char c) //s = signed, u = unsigned, h = hex
|
|
|
|
|
{
|
|
|
|
|
switch (c)
|
|
|
|
|
{
|
|
|
|
|
case 's':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Signed = DISPTYPE.SIGNED;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
case 'u':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Signed = DISPTYPE.UNSIGNED;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
case 'h':
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Signed = DISPTYPE.HEX;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-04 00:33:47 +00:00
|
|
|
|
public void PeekAddress()
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Type == TYPE.SEPARATOR)
|
2012-09-04 00:33:47 +00:00
|
|
|
|
{
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return;
|
2012-09-04 00:33:47 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Prev = Value;
|
2011-09-12 23:36:27 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
switch (Type)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.BYTE:
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Value = Domain.PeekByte(Address);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.WORD:
|
|
|
|
|
if (BigEndian)
|
2012-06-09 14:18:28 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Value = 0;
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Value |= Domain.PeekByte(Address) << 8;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 1);
|
2012-06-09 14:18:28 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Value = 0;
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Value |= Domain.PeekByte(Address);
|
|
|
|
|
Value |= Domain.PeekByte(Address + 1) << 8;
|
2012-06-09 14:18:28 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.DWORD:
|
|
|
|
|
if (BigEndian)
|
2012-06-09 14:18:28 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Value = 0;
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Value |= Domain.PeekByte(Address) << 24;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 1) << 16;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 2) << 8;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 3) << 0;
|
2012-06-09 14:18:28 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
Value = 0;
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Value |= Domain.PeekByte(Address) << 0;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 1) << 8;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 2) << 16;
|
|
|
|
|
Value |= Domain.PeekByte(Address + 3) << 24;
|
2012-06-09 14:18:28 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
2011-09-12 23:36:27 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Value != Prev)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
LastChange = Prev;
|
|
|
|
|
Changecount++;
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-04 00:33:47 +00:00
|
|
|
|
public void PokeAddress()
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Type == TYPE.SEPARATOR)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return;
|
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
switch (Type)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.BYTE:
|
2012-09-04 00:33:47 +00:00
|
|
|
|
PokeByte();
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.WORD:
|
2012-09-04 00:33:47 +00:00
|
|
|
|
PokeWord();
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.DWORD:
|
2012-09-04 00:33:47 +00:00
|
|
|
|
PokeDWord();
|
2011-06-19 19:10:01 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-09 08:29:31 +00:00
|
|
|
|
public uint UnsignedVal(int val)
|
2012-06-09 06:40:11 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
switch (Type)
|
2012-06-09 06:40:11 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.BYTE:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return (uint)(byte)val;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.WORD:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return (uint)(ushort)val;
|
|
|
|
|
}
|
|
|
|
|
return (uint)val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int SignedVal(int val)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
switch (Type)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.BYTE:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return (int)(sbyte)val;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.WORD:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return (int)(short)val;
|
2012-06-09 06:40:11 +00:00
|
|
|
|
}
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2011-09-12 00:17:17 +00:00
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Type == TYPE.SEPARATOR)
|
|
|
|
|
{
|
2011-09-13 00:29:54 +00:00
|
|
|
|
return "----";
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
2011-09-12 00:17:17 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
StringBuilder str = new StringBuilder(Notes);
|
2011-09-12 00:17:17 +00:00
|
|
|
|
str.Append(": ");
|
2012-09-03 23:42:00 +00:00
|
|
|
|
str.Append(ValToString(Value));
|
2011-09-12 00:17:17 +00:00
|
|
|
|
return str.ToString();
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-09 01:56:56 +00:00
|
|
|
|
public string ValToString(int val)
|
2011-09-12 00:17:17 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Type == TYPE.SEPARATOR)
|
|
|
|
|
{
|
2011-09-12 00:17:17 +00:00
|
|
|
|
return "";
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
2011-09-12 00:17:17 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
switch (Signed)
|
2011-09-12 00:17:17 +00:00
|
|
|
|
{
|
2012-06-09 08:29:31 +00:00
|
|
|
|
default:
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case DISPTYPE.UNSIGNED:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return UnsignedVal(val).ToString();
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case DISPTYPE.SIGNED:
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return SignedVal(val).ToString();
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case DISPTYPE.HEX:
|
|
|
|
|
switch (Type)
|
2011-09-12 00:17:17 +00:00
|
|
|
|
{
|
|
|
|
|
default:
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.BYTE:
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return String.Format("{0:X2}", val);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.WORD:
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return String.Format("{0:X4}", val);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case TYPE.DWORD:
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return String.Format("{0:X8}", val);
|
2011-09-12 00:17:17 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-12 00:13:02 +00:00
|
|
|
|
public string DiffToString(int diff)
|
|
|
|
|
{
|
|
|
|
|
string converted = diff.ToString();
|
|
|
|
|
if (diff >= 0)
|
|
|
|
|
converted = "+" + converted;
|
|
|
|
|
return converted;
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-14 21:31:00 +00:00
|
|
|
|
public void TrySetValue(string value)
|
|
|
|
|
{
|
|
|
|
|
switch (Signed)
|
|
|
|
|
{
|
|
|
|
|
case DISPTYPE.SIGNED:
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Value = int.Parse(value);
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
break;
|
|
|
|
|
case DISPTYPE.UNSIGNED:
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Value = (int)uint.Parse(value);
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
break;
|
|
|
|
|
case DISPTYPE.HEX:
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Value = int.Parse(value, NumberStyles.HexNumber);
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
#endregion
|
2012-06-09 01:56:56 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
#region Helpers
|
2012-06-09 01:56:56 +00:00
|
|
|
|
|
2012-09-04 00:33:47 +00:00
|
|
|
|
private void PokeByte()
|
2012-06-09 01:56:56 +00:00
|
|
|
|
{
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Domain.PokeByte(Address, (byte)Value);
|
2012-06-09 01:56:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
2012-09-04 00:33:47 +00:00
|
|
|
|
private void PokeWord()
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (BigEndian)
|
|
|
|
|
{
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Domain.PokeByte(Address + 0, (byte)(Value >> 8));
|
|
|
|
|
Domain.PokeByte(Address + 1, (byte)(Value));
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Domain.PokeByte(Address + 0, (byte)(Value));
|
|
|
|
|
Domain.PokeByte(Address + 1, (byte)(Value >> 8));
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
2012-09-04 00:33:47 +00:00
|
|
|
|
private void PokeDWord()
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (BigEndian)
|
|
|
|
|
{
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Domain.PokeByte(Address + 0, (byte)(Value << 24));
|
|
|
|
|
Domain.PokeByte(Address + 1, (byte)(Value << 16));
|
|
|
|
|
Domain.PokeByte(Address + 2, (byte)(Value << 8));
|
|
|
|
|
Domain.PokeByte(Address + 3, (byte)(Value));
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2012-09-04 00:33:47 +00:00
|
|
|
|
Domain.PokeByte(Address + 0, (byte)(Value));
|
|
|
|
|
Domain.PokeByte(Address + 1, (byte)(Value << 8));
|
|
|
|
|
Domain.PokeByte(Address + 2, (byte)(Value << 16));
|
|
|
|
|
Domain.PokeByte(Address + 3, (byte)(Value << 24));
|
2012-09-03 23:42:00 +00:00
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
#endregion
|
2012-06-12 00:13:02 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
#region Compare Methods
|
2012-06-12 00:13:02 +00:00
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
private int ComparePrevious(Watch Other, PREVDEF previous)
|
2012-06-09 21:43:02 +00:00
|
|
|
|
{
|
|
|
|
|
switch (previous)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTSEARCH:
|
2012-06-09 21:43:02 +00:00
|
|
|
|
return CompareLastSearch(Other);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.ORIGINAL:
|
2012-06-09 21:43:02 +00:00
|
|
|
|
return CompareOriginal(Other);
|
|
|
|
|
default:
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTFRAME:
|
2012-06-09 21:43:02 +00:00
|
|
|
|
return ComparePrev(Other);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTCHANGE:
|
2012-06-09 21:43:02 +00:00
|
|
|
|
return CompareLastChange(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
private int CompareDiff(Watch Other, PREVDEF previous)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
|
|
|
|
switch (previous)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTSEARCH:
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return CompareDiffLastSearch(Other);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.ORIGINAL:
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return CompareDiffOriginal(Other);
|
|
|
|
|
default:
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTFRAME:
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return CompareDiffPrev(Other);
|
2012-09-03 23:42:00 +00:00
|
|
|
|
case PREVDEF.LASTCHANGE:
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return CompareDiffLastChange(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-06-19 19:10:01 +00:00
|
|
|
|
private int CompareAddress(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.Address < Other.Address)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.Address > Other.Address)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareValue(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Signed == DISPTYPE.SIGNED)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (SignedVal(this.Value) < SignedVal(Other.Value))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (SignedVal(this.Value) > SignedVal(Other.Value))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (UnsignedVal(this.Value) < UnsignedVal(Other.Value))
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (UnsignedVal(this.Value) > UnsignedVal(Other.Value))
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int ComparePrev(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Signed == DISPTYPE.SIGNED)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (SignedVal(this.Prev) < SignedVal(Other.Prev))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (SignedVal(this.Prev) > SignedVal(Other.Prev))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (UnsignedVal(this.Prev) < UnsignedVal(Other.Prev))
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (UnsignedVal(this.Prev) > UnsignedVal(Other.Prev))
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-09 01:56:56 +00:00
|
|
|
|
private int CompareOriginal(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Signed == DISPTYPE.SIGNED)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (SignedVal(this.Original) < SignedVal(Other.Original))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (SignedVal(this.Original) > SignedVal(Other.Original))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (UnsignedVal(this.Original) < UnsignedVal(Other.Original))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (UnsignedVal(this.Original) > UnsignedVal(Other.Original))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareLastChange(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Signed == DISPTYPE.SIGNED)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (SignedVal(this.LastChange) < SignedVal(Other.LastChange))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (SignedVal(this.LastChange) > SignedVal(Other.LastChange))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (UnsignedVal(this.LastChange) < UnsignedVal(Other.LastChange))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (UnsignedVal(this.LastChange) > UnsignedVal(Other.LastChange))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareLastSearch(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (Signed == DISPTYPE.SIGNED)
|
2012-06-09 08:29:31 +00:00
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (SignedVal(this.LastSearch) < SignedVal(Other.LastSearch))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (SignedVal(this.LastSearch) > SignedVal(Other.LastSearch))
|
2012-06-09 08:29:31 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (UnsignedVal(this.LastSearch) < UnsignedVal(Other.LastSearch))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (UnsignedVal(this.LastSearch) > UnsignedVal(Other.LastSearch))
|
2012-06-09 01:56:56 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-12 00:13:02 +00:00
|
|
|
|
private int CompareDiffPrev(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.DiffPrev < Other.DiffPrev)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.DiffPrev > Other.DiffPrev)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareDiffOriginal(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.DiffOriginal < Other.DiffOriginal)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.DiffOriginal > Other.DiffOriginal)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareDiffLastChange(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.DiffLastChange < Other.DiffLastChange)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.DiffLastChange > Other.DiffLastChange)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareDiffLastSearch(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.DiffLastSearch < Other.DiffLastSearch)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.DiffLastSearch > Other.DiffLastSearch)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2011-06-19 19:10:01 +00:00
|
|
|
|
private int CompareChanges(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.Changecount < Other.Changecount)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.Changecount > Other.Changecount)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int CompareNotes(Watch Other)
|
|
|
|
|
{
|
2012-09-03 23:42:00 +00:00
|
|
|
|
if (this.Notes == null & Other.Notes == null)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 0;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (this.Notes == null)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return -1;
|
2012-09-03 23:42:00 +00:00
|
|
|
|
else if (Other.Notes == null)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
return 1;
|
|
|
|
|
else
|
2012-09-03 23:42:00 +00:00
|
|
|
|
return this.Notes.CompareTo(Other.Notes);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
2012-09-10 02:37:44 +00:00
|
|
|
|
private int CompareDomain(Watch Other)
|
|
|
|
|
{
|
|
|
|
|
if (this.Domain == null & Other.Domain == null)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if (this.Domain == null)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
else if (Other.Domain == null)
|
|
|
|
|
{
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return this.Domain.Name.CompareTo(Other.Domain.Name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-03 23:42:00 +00:00
|
|
|
|
public int CompareTo(Watch Other, string parameter, PREVDEF previous)
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
|
|
|
|
int compare = 0;
|
|
|
|
|
if (parameter == "Address")
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
2012-06-09 21:43:02 +00:00
|
|
|
|
compare = ComparePrevious(Other, previous);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
if (compare == 0)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
2012-09-10 02:37:44 +00:00
|
|
|
|
compare = CompareDomain(Other);
|
2012-06-12 00:13:02 +00:00
|
|
|
|
if (compare == 0)
|
2012-09-10 02:37:44 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDiff(Other, previous);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (parameter == "Value")
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
2012-06-09 21:43:02 +00:00
|
|
|
|
compare = ComparePrevious(Other, previous);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
if (compare == 0)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDiff(Other, previous);
|
|
|
|
|
if (compare == 0)
|
2012-09-10 02:37:44 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDomain(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (parameter == "Changes")
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = ComparePrevious(Other, previous);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareDiff(Other, previous);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (parameter == "Prev")
|
|
|
|
|
{
|
2012-06-09 21:43:02 +00:00
|
|
|
|
compare = ComparePrevious(Other, previous);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDiff(Other, previous);
|
|
|
|
|
if (compare == 0)
|
2012-09-10 02:37:44 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDomain(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-04 23:11:17 +00:00
|
|
|
|
else if (parameter == "Diff")
|
2011-06-19 19:10:01 +00:00
|
|
|
|
{
|
2012-06-12 00:13:02 +00:00
|
|
|
|
compare = CompareDiff(Other, previous);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
2012-06-12 00:13:02 +00:00
|
|
|
|
compare = CompareChanges(Other);
|
2011-06-19 19:10:01 +00:00
|
|
|
|
if (compare == 0)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
|
|
|
|
compare = ComparePrevious(Other, previous);
|
|
|
|
|
if (compare == 0)
|
2012-09-10 02:37:44 +00:00
|
|
|
|
{
|
|
|
|
|
compare = CompareDomain(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (parameter == "Domain")
|
|
|
|
|
{
|
|
|
|
|
compare = CompareDomain(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = ComparePrevious(Other, previous);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
2012-06-12 00:13:02 +00:00
|
|
|
|
compare = CompareNotes(Other);
|
2012-09-10 02:37:44 +00:00
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if (parameter == "Notes")
|
|
|
|
|
{
|
|
|
|
|
compare = CompareNotes(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareAddress(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareValue(Other);
|
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareChanges(Other);
|
|
|
|
|
if (compare == 0)
|
2012-06-12 00:13:02 +00:00
|
|
|
|
{
|
2012-06-09 21:43:02 +00:00
|
|
|
|
compare = ComparePrevious(Other, previous);
|
2012-06-12 00:13:02 +00:00
|
|
|
|
if (compare == 0)
|
2012-09-10 02:37:44 +00:00
|
|
|
|
{
|
2012-06-12 00:13:02 +00:00
|
|
|
|
compare = CompareDiff(Other, previous);
|
2012-09-10 02:37:44 +00:00
|
|
|
|
if (compare == 0)
|
|
|
|
|
{
|
|
|
|
|
compare = CompareDomain(Other);
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-06-12 00:13:02 +00:00
|
|
|
|
}
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return compare;
|
|
|
|
|
}
|
2012-09-03 23:42:00 +00:00
|
|
|
|
|
|
|
|
|
#endregion
|
2011-06-19 19:10:01 +00:00
|
|
|
|
}
|
2011-01-23 18:27:26 +00:00
|
|
|
|
}
|