in Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7MemoryAddress.cs [63:143]
public int Compare(enum_CONTEXT_COMPARE uContextCompare, IDebugMemoryContext2[] compareToItems, uint compareToLength, out uint foundIndex)
{
foundIndex = uint.MaxValue;
var contextCompare = uContextCompare;
for (uint c = 0; c < compareToLength; c++)
{
var compareTo = compareToItems[c] as AD7MemoryAddress;
if (compareTo == null)
{
continue;
}
if (!ReferenceEquals(this._engine, compareTo._engine))
{
continue;
}
bool result;
switch (contextCompare)
{
case enum_CONTEXT_COMPARE.CONTEXT_EQUAL:
result = this._line == compareTo._line;
break;
case enum_CONTEXT_COMPARE.CONTEXT_LESS_THAN:
result = this._line < compareTo._line;
break;
case enum_CONTEXT_COMPARE.CONTEXT_GREATER_THAN:
result = this._line > compareTo._line;
break;
case enum_CONTEXT_COMPARE.CONTEXT_LESS_THAN_OR_EQUAL:
result = this._line <= compareTo._line;
break;
case enum_CONTEXT_COMPARE.CONTEXT_GREATER_THAN_OR_EQUAL:
result = this._line >= compareTo._line;
break;
case enum_CONTEXT_COMPARE.CONTEXT_SAME_SCOPE:
case enum_CONTEXT_COMPARE.CONTEXT_SAME_FUNCTION:
if (this._frame != null)
{
result = compareTo.FileName == this.FileName && compareTo._line >= this._frame.StartLine && compareTo._line <= this._frame.EndLine;
}
else if (compareTo._frame != null)
{
result = compareTo.FileName == this.FileName && this._line >= compareTo._frame.StartLine && compareTo._line <= compareTo._frame.EndLine;
}
else
{
result = this._line == compareTo._line && this.FileName == compareTo.FileName;
}
break;
case enum_CONTEXT_COMPARE.CONTEXT_SAME_MODULE:
result = this.FileName == compareTo.FileName;
break;
case enum_CONTEXT_COMPARE.CONTEXT_SAME_PROCESS:
result = true;
break;
default:
// A new comparison was invented that we don't support
return VSConstants.E_NOTIMPL;
}
if (result)
{
foundIndex = c;
return VSConstants.S_OK;
}
}
return VSConstants.S_FALSE;
}