| require 'debugger/BreakpointContracts' |
| |
| module XoredDebugger |
| class FastLineBreakpoint |
| include LineBreakpointContract |
| attr_reader :breakpoint_id |
| attr_reader :temporary |
| attr_accessor :state |
| attr_reader :raw_bp |
| |
| def initialize(id, raw_bp, temporary) |
| @breakpoint_id = id |
| @temporary = temporary |
| @raw_bp = raw_bp |
| @state = true |
| end |
| |
| def filename |
| @raw_bp.source |
| end |
| |
| def lineno |
| @raw_bp.pos |
| end |
| |
| def lineno=(line) |
| @raw_bp.pos = line |
| nil |
| end |
| |
| def expression |
| @raw_bp.expr |
| end |
| |
| def expression=(expr) |
| if (expr.nil?) |
| expr = '' |
| end |
| @raw_bp.expr = expr |
| nil |
| end |
| |
| def hit_value |
| @raw_bp.hit_value |
| end |
| |
| def hit_value=(value) |
| @raw_bp.hit_value = value |
| end |
| |
| def hit_condition |
| if @raw_bp.hit_condition == :ge |
| return COND_GREATER_OR_EQUALS |
| elsif @raw_bp.hit_condition == :eq |
| COND_EQUALS |
| elsif @raw_bp.hit_condition == :mod |
| COND_MULTIPLE |
| else |
| nil |
| end |
| end |
| |
| def hit_condition=(condition) |
| if condition == COND_GREATER_OR_EQUALS |
| @raw_bp.hit_condition = :ge |
| elsif condition == COND_EQUALS |
| @raw_bp.hit_condition = :eq |
| elsif condition == COND_MULTIPLE |
| @raw_bp.hit_condition = :mod |
| elsif condition.nil? || condition.empty? |
| @raw_bp.hit_condition = nil |
| else |
| raise ArgumentError, 'Invalid condition' |
| end |
| end |
| |
| def hit_count |
| @raw_bp.hit_count |
| end |
| end |
| end |
| |