From efcf9903a9cb3095199f36ff9d2405bdfc0776cd Mon Sep 17 00:00:00 2001 From: M4x1m3 Date: Sun, 5 Jul 2020 21:15:58 +0200 Subject: [PATCH] [mpy/files] implemented open --- python/port/builtins.c | 10 ++++++++++ python/port/mod/ion/file.cpp | 20 +++++++++++++++++++- python/port/mod/ion/file.h | 9 +++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 python/port/mod/ion/file.h diff --git a/python/port/builtins.c b/python/port/builtins.c index fa0e1f3be..fbe121d30 100644 --- a/python/port/builtins.c +++ b/python/port/builtins.c @@ -1,9 +1,19 @@ #include "py/builtin.h" #include "py/obj.h" +#include "py/runtime.h" +#include "mod/ion/file.h" #include #include "mphalport.h" mp_obj_t mp_builtin_open(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs) { + mp_arg_check_num(n_args, kwargs->used, 1, 2, false); + + if (n_args == 2) { + return file_open_mode(args[0], args[1]); + } else { + return file_open(args[0]); + } + return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_open_obj, 1, mp_builtin_open); diff --git a/python/port/mod/ion/file.cpp b/python/port/mod/ion/file.cpp index bf72e0bab..325fc5c9d 100644 --- a/python/port/mod/ion/file.cpp +++ b/python/port/mod/ion/file.cpp @@ -7,6 +7,8 @@ extern "C" { #include #include #include +#include +#include "file.h" } #include @@ -156,7 +158,8 @@ extern const mp_obj_type_t file_type = { 0, // flags MP_QSTR_file, // name file_print, // __repr__, __srt__ - file_make_new, // __new__, __init__ +// file_make_new, // __new__, __init__ + nullptr, // __new__, __init__ nullptr, // __call__ nullptr, // unary operations nullptr, // binary operations @@ -998,3 +1001,18 @@ STATIC mp_obj_t file_truncate(size_t n_args, const mp_obj_t* args) { return mp_const_none; } +mp_obj_t file_open(mp_obj_t file_name) { + mp_obj_t args[1]; + args[0] = file_name; + + return file_make_new(nullptr, 1, 0, args); +} + +mp_obj_t file_open_mode(mp_obj_t file_name, mp_obj_t file_mode) { + mp_obj_t args[2]; + args[0] = file_name; + args[1] = file_mode; + + return file_make_new(nullptr, 2, 0, args); +} + diff --git a/python/port/mod/ion/file.h b/python/port/mod/ion/file.h new file mode 100644 index 000000000..ea9bfded0 --- /dev/null +++ b/python/port/mod/ion/file.h @@ -0,0 +1,9 @@ +#ifndef MP_MOD_FILE_H +#define MP_MOD_FILE_H + +#include + +mp_obj_t file_open(mp_obj_t file_name); +mp_obj_t file_open_mode(mp_obj_t file_name, mp_obj_t file_mode); + +#endif