mp_lexer_t *mp_lexer_new_from_str_len(qstr src_name, const char *str, uint len, uint free_len) { mp_lexer_str_buf_t *sb = m_new_obj(mp_lexer_str_buf_t); sb->free_len = free_len; sb->src_beg = str; sb->src_cur = str; sb->src_end = str + len; return mp_lexer_new(src_name, sb, (mp_lexer_stream_next_char_t)str_buf_next_char, (mp_lexer_stream_close_t)str_buf_free); }
// len not used mp_lexer_t *mp_find_frozen_module(const char *mod, int len) { const esp_frozen_t *pp = mp_frozen_table; for (int ii = 0; ii < mp_frozen_table_size; ii++, pp++) { if (!strcmp(mod, pp->name)) { pb_context_t *ctx = irom_make_context(pp); return mp_lexer_new(MP_QSTR_, (void *)ctx, (mp_lexer_stream_next_byte_t)irom_next_char, irom_close); } } return NULL; }
mp_lexer_t *mp_lexer_new_from_str_len(qstr src_name, const char *str, mp_uint_t len, mp_uint_t free_len) { mp_lexer_str_buf_t *sb = m_new_obj_maybe(mp_lexer_str_buf_t); if (sb == NULL) { return NULL; } sb->free_len = free_len; sb->src_beg = str; sb->src_cur = str; sb->src_end = str + len; return mp_lexer_new(src_name, sb, (mp_lexer_stream_next_byte_t)str_buf_next_byte, (mp_lexer_stream_close_t)str_buf_free); }
mp_lexer_t *mp_lexer_new_from_file(const char *filename) { mp_lexer_file_buf_t *fb = m_new_obj(mp_lexer_file_buf_t); fb->fd = open(filename, O_RDONLY); if (fb->fd < 0) { m_del_obj(mp_lexer_file_buf_t, fb); return NULL; } int n = read(fb->fd, fb->buf, sizeof(fb->buf)); fb->len = n; fb->pos = 0; return mp_lexer_new(qstr_from_str(filename), fb, (mp_lexer_stream_next_char_t)file_buf_next_char, (mp_lexer_stream_close_t)file_buf_close); }
mp_lexer_t *mp_lexer_new_from_file(const char *filename) { mp_lexer_file_buf_t *fb = m_new_obj_maybe(mp_lexer_file_buf_t); if (fb == NULL) { return NULL; } FRESULT res = f_open(&fb->fp, filename, FA_READ); if (res != FR_OK) { m_del_obj(mp_lexer_file_buf_t, fb); return NULL; } UINT n; f_read(&fb->fp, fb->buf, sizeof(fb->buf), &n); fb->len = n; fb->pos = 0; return mp_lexer_new(qstr_from_str(filename), fb, (mp_lexer_stream_next_byte_t)file_buf_next_byte, (mp_lexer_stream_close_t)file_buf_close); }
mp_lexer_t *mp_lexer_new_from_fd(qstr filename, int fd, bool close_fd) { mp_reader_t reader; mp_reader_new_file_from_fd(&reader, fd, close_fd); return mp_lexer_new(filename, reader); }
mp_lexer_t *mp_lexer_new_from_file(const char *filename) { mp_reader_t reader; mp_reader_new_file(&reader, filename); return mp_lexer_new(qstr_from_str(filename), reader); }
mp_lexer_t *mp_lexer_new_from_str_len(qstr src_name, const char *str, size_t len, size_t free_len) { mp_reader_t reader; mp_reader_new_mem(&reader, (const byte*)str, len, free_len); return mp_lexer_new(src_name, reader); }