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);
|
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 {
|
|||||||
} 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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user