mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
debug.h
Go to the documentation of this file.
1 
7 #ifndef MRUBY_DEBUG_H
8 #define MRUBY_DEBUG_H
9 
10 #include "common.h"
11 
16 
17 typedef enum mrb_debug_line_type {
18  mrb_debug_line_ary = 0,
19  mrb_debug_line_flat_map = 1
21 
22 typedef struct mrb_irep_debug_info_line {
23  uint32_t start_pos;
24  uint16_t line;
26 
27 typedef struct mrb_irep_debug_info_file {
28  uint32_t start_pos;
29  mrb_sym filename_sym;
30  uint32_t line_entry_count;
31  mrb_debug_line_type line_type;
32  union {
33  void *ptr;
34  mrb_irep_debug_info_line *flat_map;
35  uint16_t *ary;
36  } lines;
38 
39 typedef struct mrb_irep_debug_info {
40  uint32_t pc_count;
41  uint16_t flen;
44 
45 /*
46  * get line from irep's debug info and program counter
47  * @return returns NULL if not found
48  */
49 MRB_API const char *mrb_debug_get_filename(mrb_state *mrb, mrb_irep *irep, ptrdiff_t pc);
50 
51 /*
52  * get line from irep's debug info and program counter
53  * @return returns -1 if not found
54  */
55 MRB_API int32_t mrb_debug_get_line(mrb_state *mrb, mrb_irep *irep, ptrdiff_t pc);
56 
57 MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
58 MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
59  mrb_state *mrb, mrb_irep_debug_info *info,
60  const char *filename, uint16_t *lines,
61  uint32_t start_pos, uint32_t end_pos);
62 MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
63 
65 
66 #endif /* MRUBY_DEBUG_H */
mruby Symbol.
Definition: debug.h:39
#define MRB_BEGIN_DECL
Start declarations in C mode.
Definition: common.h:26
Definition: irep.h:30
#define MRB_API
Declare a public MRuby API function.
Definition: common.h:73
#define MRB_END_DECL
End declarations in C mode.
Definition: common.h:28
mruby common platform definition"
mrb_debug_line_type
MRuby Debugging.
Definition: debug.h:17
Definition: debug.h:27
Definition: mruby.h:215
Definition: debug.h:22