Skip to content

Commit dec31bb

Browse files
committed
objexcept: Add mp_obj_new_exception_arg1() convenience function.
1 parent b418b6f commit dec31bb

2 files changed

Lines changed: 6 additions & 0 deletions

File tree

py/obj.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ mp_obj_t mp_obj_new_float(mp_float_t val);
351351
mp_obj_t mp_obj_new_complex(mp_float_t real, mp_float_t imag);
352352
#endif
353353
mp_obj_t mp_obj_new_exception(const mp_obj_type_t *exc_type);
354+
mp_obj_t mp_obj_new_exception_arg1(const mp_obj_type_t *exc_type, mp_obj_t arg);
354355
mp_obj_t mp_obj_new_exception_args(const mp_obj_type_t *exc_type, uint n_args, const mp_obj_t *args);
355356
mp_obj_t mp_obj_new_exception_msg(const mp_obj_type_t *exc_type, const char *msg);
356357
mp_obj_t mp_obj_new_exception_msg_varg(const mp_obj_type_t *exc_type, const char *fmt, ...); // counts args by number of % symbols in fmt, excluding %%; can only handle void* sizes (ie no float/double!)

py/objexcept.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ mp_obj_t mp_obj_new_exception(const mp_obj_type_t *exc_type) {
191191
return mp_obj_new_exception_args(exc_type, 0, NULL);
192192
}
193193

194+
// "Optimized" version for common(?) case of having 1 exception arg
195+
mp_obj_t mp_obj_new_exception_arg1(const mp_obj_type_t *exc_type, mp_obj_t arg) {
196+
return mp_obj_new_exception_args(exc_type, 1, &arg);
197+
}
198+
194199
mp_obj_t mp_obj_new_exception_args(const mp_obj_type_t *exc_type, uint n_args, const mp_obj_t *args) {
195200
assert(exc_type->make_new == mp_obj_exception_make_new);
196201
return exc_type->make_new((mp_obj_t)exc_type, n_args, 0, args);

0 commit comments

Comments
 (0)