Commit b5b1f2c5 authored by Damien George's avatar Damien George
Browse files

py/emitglue: Add mp_raw_code_load_mem to load raw-code from memory.

parent f148727b
...@@ -324,6 +324,26 @@ mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader) { ...@@ -324,6 +324,26 @@ mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader) {
return load_raw_code(reader); return load_raw_code(reader);
} }
typedef struct _mp_mem_reader_t {
const byte *cur;
const byte *end;
} mp_mem_reader_t;
STATIC mp_uint_t mp_mem_reader_next_byte(void *br_in) {
mp_mem_reader_t *br = br_in;
if (br->cur < br->end) {
return *br->cur++;
} else {
return (mp_uint_t)-1;
}
}
mp_raw_code_t *mp_raw_code_load_mem(const byte *buf, size_t len) {
mp_mem_reader_t mr = {buf, buf + len};
mp_reader_t reader = {&mr, mp_mem_reader_next_byte};
return mp_raw_code_load(&reader);
}
// here we define mp_raw_code_load_file depending on the port // here we define mp_raw_code_load_file depending on the port
// TODO abstract this away properly // TODO abstract this away properly
......
...@@ -62,6 +62,7 @@ typedef struct _mp_reader_t { ...@@ -62,6 +62,7 @@ typedef struct _mp_reader_t {
} mp_reader_t; } mp_reader_t;
mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader); mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader);
mp_raw_code_t *mp_raw_code_load_mem(const byte *buf, size_t len);
mp_raw_code_t *mp_raw_code_load_file(const char *filename); mp_raw_code_t *mp_raw_code_load_file(const char *filename);
#endif #endif
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment