mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers debug.h Source File

debug.h

00001 /*
00002 ** mruby/debug.h - mruby debug info
00003 **
00004 ** See Copyright Notice in mruby.h
00005 */
00006 
00007 #ifndef MRUBY_DEBUG_H
00008 #define MRUBY_DEBUG_H
00009 
00010 #if defined(__cplusplus)
00011 extern "C" {
00012 #endif
00013 
00014 typedef enum mrb_debug_line_type {
00015   mrb_debug_line_ary = 0,
00016   mrb_debug_line_flat_map = 1
00017 } mrb_debug_line_type;
00018 
00019 typedef struct mrb_irep_debug_info_line {
00020   uint32_t start_pos;
00021   uint16_t line;
00022 } mrb_irep_debug_info_line;
00023 
00024 typedef struct mrb_irep_debug_info_file {
00025   uint32_t start_pos;
00026   const char *filename;
00027   mrb_sym filename_sym;
00028   uint32_t line_entry_count;
00029   mrb_debug_line_type line_type;
00030   union {
00031     void *ptr;
00032     mrb_irep_debug_info_line *flat_map;
00033     uint16_t *ary;
00034   } lines;
00035 } mrb_irep_debug_info_file;
00036 
00037 typedef struct mrb_irep_debug_info {
00038   uint32_t pc_count;
00039   uint16_t flen;
00040   mrb_irep_debug_info_file **files;
00041 } mrb_irep_debug_info;
00042 
00043 /*
00044  * get line from irep's debug info and program counter
00045  * @return returns NULL if not found
00046  */
00047 MRB_API const char *mrb_debug_get_filename(mrb_irep *irep, uint32_t pc);
00048 
00049 /*
00050  * get line from irep's debug info and program counter
00051  * @return returns -1 if not found
00052  */
00053 MRB_API int32_t mrb_debug_get_line(mrb_irep *irep, uint32_t pc);
00054 
00055 MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
00056     mrb_state *mrb, mrb_irep *irep,
00057     uint32_t start_pos, uint32_t end_pos);
00058 MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
00059 MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
00060 
00061 #if defined(__cplusplus)
00062 }  /* extern "C" { */
00063 #endif
00064 
00065 #endif /* MRUBY_DEBUG_H */
00066