+added an mb_set_import_handler function.

This commit is contained in:
Wang Renxin 2015-10-27 11:52:48 +08:00
parent 9c791299d6
commit 3794eeb31f

View File

@ -539,6 +539,7 @@ typedef struct mb_interpreter_t {
mb_error_handler_t error_handler; mb_error_handler_t error_handler;
mb_print_func_t printer; mb_print_func_t printer;
mb_input_func_t inputer; mb_input_func_t inputer;
mb_import_handler_t import_handler;
void* userdata; void* userdata;
} mb_interpreter_t; } mb_interpreter_t;
@ -3464,14 +3465,16 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) {
safe_free(buf); safe_free(buf);
} }
} else { } else {
_set_current_error(s, SE_PS_FILE_OPEN_FAILED, 0); if(!s->import_handler || s->import_handler(s, sym + 1) != MB_FUNC_OK) {
if(s->error_handler) { _set_current_error(s, SE_PS_FILE_OPEN_FAILED, 0);
(s->error_handler)(s, s->last_error, (char*)mb_get_error_desc(s->last_error), if(s->error_handler) {
s->last_error_func, (s->error_handler)(s, s->last_error, (char*)mb_get_error_desc(s->last_error),
s->last_error_pos, s->last_error_func,
s->last_error_row, s->last_error_pos,
s->last_error_col, s->last_error_row,
result); s->last_error_col,
result);
}
} }
} }
context->parsing_state = _PS_STRING; context->parsing_state = _PS_STRING;
@ -7933,6 +7936,17 @@ int mb_set_inputer(struct mb_interpreter_t* s, mb_input_func_t p) {
return result; return result;
} }
int mb_set_import_handler(struct mb_interpreter_t* s, mb_import_handler_t h) {
/* Set an import handler to an interpreter instance */
int result = MB_FUNC_OK;
mb_assert(s);
s->import_handler = h;
return result;
}
int mb_gets(char* buf, int s) { int mb_gets(char* buf, int s) {
/* Safe stdin reader function */ /* Safe stdin reader function */
int result = 0; int result = 0;