py/emitglue: Add mp_raw_code_load_mem to load raw-code from memory.
This commit is contained in:
parent
f148727b78
commit
b5b1f2c527
|
@ -324,6 +324,26 @@ mp_raw_code_t *mp_raw_code_load(mp_reader_t *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
|
||||
// TODO abstract this away properly
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ typedef struct _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_mem(const byte *buf, size_t len);
|
||||
mp_raw_code_t *mp_raw_code_load_file(const char *filename);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue