File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -324,6 +324,26 @@ mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader) {
324324 return load_raw_code (reader );
325325}
326326
327+ typedef struct _mp_mem_reader_t {
328+ const byte * cur ;
329+ const byte * end ;
330+ } mp_mem_reader_t ;
331+
332+ STATIC mp_uint_t mp_mem_reader_next_byte (void * br_in ) {
333+ mp_mem_reader_t * br = br_in ;
334+ if (br -> cur < br -> end ) {
335+ return * br -> cur ++ ;
336+ } else {
337+ return (mp_uint_t )- 1 ;
338+ }
339+ }
340+
341+ mp_raw_code_t * mp_raw_code_load_mem (const byte * buf , size_t len ) {
342+ mp_mem_reader_t mr = {buf , buf + len };
343+ mp_reader_t reader = {& mr , mp_mem_reader_next_byte };
344+ return mp_raw_code_load (& reader );
345+ }
346+
327347// here we define mp_raw_code_load_file depending on the port
328348// TODO abstract this away properly
329349
Original file line number Diff line number Diff line change @@ -62,6 +62,7 @@ typedef struct _mp_reader_t {
6262} mp_reader_t ;
6363
6464mp_raw_code_t * mp_raw_code_load (mp_reader_t * reader );
65+ mp_raw_code_t * mp_raw_code_load_mem (const byte * buf , size_t len );
6566mp_raw_code_t * mp_raw_code_load_file (const char * filename );
6667#endif
6768
You can’t perform that action at this time.
0 commit comments