summaryrefslogtreecommitdiff
path: root/py/lexer.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-11-16 16:22:08 +1100
committerDamien George <damien.p.george@gmail.com>2016-11-16 18:13:50 +1100
commit511c083811ca538753dfccc7c908048b2c23bea4 (patch)
treeb410bf1bf1cfaaeaa9e751c37bc36b5f8f423e15 /py/lexer.c
parent6b239c271c9c7041f9741c2a0f348f350808ad8a (diff)
py/lexer: Rewrite mp_lexer_new_from_str_len in terms of mp_reader_mem.
Diffstat (limited to 'py/lexer.c')
-rw-r--r--py/lexer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/py/lexer.c b/py/lexer.c
index 4a7c8f580..f1be77805 100644
--- a/py/lexer.c
+++ b/py/lexer.c
@@ -28,6 +28,7 @@
#include <assert.h>
#include "py/mpstate.h"
+#include "py/reader.h"
#include "py/lexer.h"
#include "py/runtime.h"
@@ -750,6 +751,14 @@ mp_lexer_t *mp_lexer_new(qstr src_name, void *stream_data, mp_lexer_stream_next_
return lex;
}
+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_reader_t reader;
+ if (!mp_reader_new_mem(&reader, (const byte*)str, len, free_len)) {
+ return NULL;
+ }
+ return mp_lexer_new(src_name, reader.data, (mp_lexer_stream_next_byte_t)reader.readbyte, (mp_lexer_stream_close_t)reader.close);
+}
+
void mp_lexer_free(mp_lexer_t *lex) {
if (lex) {
if (lex->stream_close) {