public int Compare()

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;
        }