Class: Byebug::Breakpoint
- Inherits:
-
Object
- Object
- Byebug::Breakpoint
- Defined in:
- ext/byebug/breakpoint.c
Instance Method Summary collapse
-
#enabled=(bool) ⇒ Object
Enables or disables breakpoint.
-
#enabled? ⇒ Boolean
Returns
true
if breakpoint is enabled, false otherwise. -
#expr ⇒ String
Returns a conditional expression which indicates when this breakpoint should be activated.
-
#expr=(string) ⇒ Object
Sets or unsets the conditional expression which indicates when this breakpoint should be activated.
-
#hit_condition ⇒ Object
Returns the hit condition of the breakpoint:
nil
if it is an unconditional breakpoint, or :greater_or_equal, :equal or :modulo otherwise. -
#hit_condition=(symbol) ⇒ Object
Sets the hit condition of the breakpoint which must be one of the following values:.
-
#hit_count ⇒ Integer
Returns the number of times this breakpoint has been hit.
-
#hit_value ⇒ Integer
Returns the hit value of the breakpoint, namely, a value to build a condition on the number of hits of the breakpoint.
-
#hit_value=(int) ⇒ Object
Sets the hit value of the breakpoint.
-
#id ⇒ Integer
Returns the id of the breakpoint.
- #initialize(source, pos, expr) ⇒ Object constructor
-
#pos ⇒ String, Integer
Returns the position of this breakpoint, either a method name or a line number.
-
#source ⇒ String
Returns the source file of the breakpoint.
Constructor Details
#initialize(source, pos, expr) ⇒ Object
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 |
# File 'ext/byebug/breakpoint.c', line 256
static VALUE
brkpt_initialize(VALUE self, VALUE source, VALUE pos, VALUE expr)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
breakpoint->type = FIXNUM_P(pos) ? BP_POS_TYPE : BP_METHOD_TYPE;
if(breakpoint->type == BP_POS_TYPE)
breakpoint->pos.line = FIX2INT(pos);
else
breakpoint->pos.mid = SYM2ID(pos);
breakpoint->id = ++breakpoint_max;
breakpoint->source = StringValue(source);
breakpoint->enabled = Qtrue;
breakpoint->expr = NIL_P(expr) ? expr : StringValue(expr);
breakpoint->hit_count = 0;
breakpoint->hit_value = 0;
breakpoint->hit_condition = HIT_COND_NONE;
return Qnil;
}
|
Instance Method Details
#enabled=(bool) ⇒ Object
Enables or disables breakpoint.
45 46 47 48 49 50 51 52 |
# File 'ext/byebug/breakpoint.c', line 45
static VALUE
brkpt_set_enabled(VALUE self, VALUE bool)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return breakpoint->enabled = bool;
}
|
#enabled? ⇒ Boolean
Returns true
if breakpoint is enabled, false otherwise.
30 31 32 33 34 35 36 37 |
# File 'ext/byebug/breakpoint.c', line 30
static VALUE
brkpt_enabled(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return breakpoint->enabled;
}
|
#expr ⇒ String
Returns a conditional expression which indicates when this breakpoint should be activated.
61 62 63 64 65 66 67 68 |
# File 'ext/byebug/breakpoint.c', line 61
static VALUE
brkpt_expr(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return breakpoint->expr;
}
|
#expr=(string) ⇒ Object
Sets or unsets the conditional expression which indicates when this breakpoint should be activated.
77 78 79 80 81 82 83 84 85 |
# File 'ext/byebug/breakpoint.c', line 77
static VALUE
brkpt_set_expr(VALUE self, VALUE expr)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
breakpoint->expr = NIL_P(expr) ? expr: StringValue(expr);
return expr;
}
|
#hit_condition ⇒ Object
Returns the hit condition of the breakpoint: nil
if it is an
unconditional breakpoint, or :greater_or_equal, :equal or :modulo otherwise
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'ext/byebug/breakpoint.c', line 94
static VALUE
brkpt_hit_condition(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
switch(breakpoint->hit_condition)
{
case HIT_COND_GE:
return ID2SYM(rb_intern("greater_or_equal"));
case HIT_COND_EQ:
return ID2SYM(rb_intern("equal"));
case HIT_COND_MOD:
return ID2SYM(rb_intern("modulo"));
case HIT_COND_NONE:
default:
return Qnil;
}
}
|
#hit_condition=(symbol) ⇒ Object
Sets the hit condition of the breakpoint which must be one of the following values:
nil
if it is an unconditional breakpoint, or :greater_or_equal(:ge), :equal(:eq), :modulo(:mod)
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'ext/byebug/breakpoint.c', line 124
static VALUE
brkpt_set_hit_condition(VALUE self, VALUE value)
{
breakpoint_t *breakpoint;
ID id_value;
Data_Get_Struct(self, breakpoint_t, breakpoint);
id_value = rb_to_id(value);
if(rb_intern("greater_or_equal") == id_value || rb_intern("ge") == id_value)
breakpoint->hit_condition = HIT_COND_GE;
else if(rb_intern("equal") == id_value || rb_intern("eq") == id_value)
breakpoint->hit_condition = HIT_COND_EQ;
else if(rb_intern("modulo") == id_value || rb_intern("mod") == id_value)
breakpoint->hit_condition = HIT_COND_MOD;
else
rb_raise(rb_eArgError, "Invalid condition parameter");
return value;
}
|
#hit_count ⇒ Integer
Returns the number of times this breakpoint has been hit.
150 151 152 153 154 155 156 157 |
# File 'ext/byebug/breakpoint.c', line 150
static VALUE
brkpt_hit_count(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return INT2FIX(breakpoint->hit_count);
}
|
#hit_value ⇒ Integer
Returns the hit value of the breakpoint, namely, a value to build a condition on the number of hits of the breakpoint.
166 167 168 169 170 171 172 173 |
# File 'ext/byebug/breakpoint.c', line 166
static VALUE
brkpt_hit_value(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return INT2FIX(breakpoint->hit_value);
}
|
#hit_value=(int) ⇒ Object
Sets the hit value of the breakpoint. This allows the user to set conditions on the number of hits to enable/disable the breakpoint.
182 183 184 185 186 187 188 189 190 |
# File 'ext/byebug/breakpoint.c', line 182
static VALUE
brkpt_set_hit_value(VALUE self, VALUE value)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
breakpoint->hit_value = FIX2INT(value);
return value;
}
|
#id ⇒ Integer
Returns the id of the breakpoint.
198 199 200 201 202 203 204 205 |
# File 'ext/byebug/breakpoint.c', line 198
static VALUE
brkpt_id(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return INT2FIX(breakpoint->id);
}
|
#pos ⇒ String, Integer
Returns the position of this breakpoint, either a method name or a line
number.
214 215 216 217 218 219 220 221 222 223 224 |
# File 'ext/byebug/breakpoint.c', line 214
static VALUE
brkpt_pos(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
if (breakpoint->type == BP_METHOD_TYPE)
return rb_str_new2(rb_id2name(breakpoint->pos.mid));
else
return INT2FIX(breakpoint->pos.line);
}
|
#source ⇒ String
Returns the source file of the breakpoint.
232 233 234 235 236 237 238 239 |
# File 'ext/byebug/breakpoint.c', line 232
static VALUE
brkpt_source(VALUE self)
{
breakpoint_t *breakpoint;
Data_Get_Struct(self, breakpoint_t, breakpoint);
return breakpoint->source;
}
|