// Token: 0x0600019A RID: 410 RVA: 0x0000629F File Offset: 0x0000449F
 public SourceLocation(string file, int line, SourceRange range)
 {
     this.FileName    = file;
     this.Line        = line;
     this.SourceRange = new SourceRange?(range);
 }
예제 #2
0
        // Token: 0x060000CE RID: 206 RVA: 0x00004100 File Offset: 0x00002300
        protected bool DoBind()
        {
            if (this.Request.LocationType == enum_BP_LOCATION_TYPE.BPLT_CODE_FILE_LINE)
            {
                if ((this.Request.RequestInfo.dwFields & enum_BPREQI_FIELDS.BPREQI_BPLOCATION) == 0)
                {
                    this.OnBreakpointError("Breakpoints of this type are not supported.");
                    return(false);
                }
                IDebugDocumentPosition2 debugDocumentPosition = (IDebugDocumentPosition2)Marshal.GetObjectForIUnknown(this.Request.RequestInfo.bpLocation.unionmember2);
                Utils.RequireOk(debugDocumentPosition.GetFileName(out var file));
                TEXT_POSITION[] array  = new TEXT_POSITION[1];
                TEXT_POSITION[] array2 = new TEXT_POSITION[1];
                Utils.RequireOk(debugDocumentPosition.GetRange(array, array2));
                SourceRange    range    = new SourceRange((int)(array[0].dwLine + 1U), (int)(array2[0].dwLine + 1U), (int)(array[0].dwColumn + 1U), (int)(array2[0].dwColumn + 1U));
                SourceLocation location = new SourceLocation(file, (int)(array[0].dwLine + 1U), range);
                if ((this.Request.RequestInfo.dwFields & enum_BPREQI_FIELDS.BPREQI_PASSCOUNT) != 0)
                {
                    this.HitCount = (int)this.Request.RequestInfo.bpPassCount.dwPassCount;
                    switch (this.Request.RequestInfo.bpPassCount.stylePassCount)
                    {
                    case enum_BP_PASSCOUNT_STYLE.BP_PASSCOUNT_EQUAL:
                        this.HitCountMode = HitCountMode.EqualTo;
                        break;

                    case enum_BP_PASSCOUNT_STYLE.BP_PASSCOUNT_EQUAL_OR_GREATER:
                        this.HitCountMode = HitCountMode.GreaterThanOrEqualTo;
                        break;

                    case enum_BP_PASSCOUNT_STYLE.BP_PASSCOUNT_MOD:
                        this.HitCountMode = HitCountMode.MultipleOf;
                        break;

                    default:
                        this.HitCountMode = HitCountMode.None;
                        break;
                    }
                }
                if ((this.Request.RequestInfo.dwFields & enum_BPREQI_FIELDS.BPREQI_CONDITION) != 0)
                {
                    this.ConditionExpression     = this.Request.RequestInfo.bpCondition.bstrCondition;
                    this.BreakIfConditionChanges = (this.Request.RequestInfo.bpCondition.styleCondition == enum_BP_COND_STYLE.BP_COND_WHEN_CHANGED);
                }
                this.Handle = this.Engine.BindBreakpoint(this, location);
                if (this.Handle == null)
                {
                    return(false);
                }
                this.Handle.Enabled = this.is_enabled;
                return(true);
            }
            else
            {
                if (this.Request.LocationType == enum_BP_LOCATION_TYPE.BPLT_CODE_FUNC_OFFSET)
                {
                    this.OnBreakpointError("Function breakpoints are not supported yet.");
                    return(false);
                }
                this.OnBreakpointError("Breakpoints of this type are not supported.");
                return(false);
            }
        }