mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
support bytes(list)
This commit is contained in:
parent
f2e184aa81
commit
4e447d89af
@ -394,6 +394,23 @@ Arg* PikaStdLib_SysObj_bytes(PikaObj* self, Arg* val) {
|
||||
Arg* bytes = arg_newBytes((uint8_t*)arg_getStr(val), size);
|
||||
return bytes;
|
||||
}
|
||||
#if !PIKA_NANO_ENABLE
|
||||
if (argType_isObject(type)) {
|
||||
PikaObj* obj = arg_getPtr(val);
|
||||
PikaObj* New_PikaStdData_List(Args * args);
|
||||
PikaObj* New_PikaStdData_Tuple(Args * args);
|
||||
if (obj->constructor == New_PikaStdData_List ||
|
||||
obj->constructor == New_PikaStdData_Tuple) {
|
||||
PikaList* list = obj_getPtr(obj, "list");
|
||||
Arg* bytes = arg_newBytes(NULL, list_getSize(list));
|
||||
uint8_t* bytes_raw = arg_getBytes(bytes);
|
||||
for (size_t i = 0; i < list_getSize(list); i++) {
|
||||
bytes_raw[i] = (uint8_t)list_getInt(list, i);
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
obj_setErrorCode(self, 1);
|
||||
__platform_printf("Error: input arg type not supported.\r\n");
|
||||
return arg_newNull();
|
||||
|
@ -394,6 +394,23 @@ Arg* PikaStdLib_SysObj_bytes(PikaObj* self, Arg* val) {
|
||||
Arg* bytes = arg_newBytes((uint8_t*)arg_getStr(val), size);
|
||||
return bytes;
|
||||
}
|
||||
#if !PIKA_NANO_ENABLE
|
||||
if (argType_isObject(type)) {
|
||||
PikaObj* obj = arg_getPtr(val);
|
||||
PikaObj* New_PikaStdData_List(Args * args);
|
||||
PikaObj* New_PikaStdData_Tuple(Args * args);
|
||||
if (obj->constructor == New_PikaStdData_List ||
|
||||
obj->constructor == New_PikaStdData_Tuple) {
|
||||
PikaList* list = obj_getPtr(obj, "list");
|
||||
Arg* bytes = arg_newBytes(NULL, list_getSize(list));
|
||||
uint8_t* bytes_raw = arg_getBytes(bytes);
|
||||
for (size_t i = 0; i < list_getSize(list); i++) {
|
||||
bytes_raw[i] = (uint8_t)list_getInt(list, i);
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
obj_setErrorCode(self, 1);
|
||||
__platform_printf("Error: input arg type not supported.\r\n");
|
||||
return arg_newNull();
|
||||
|
@ -296,4 +296,19 @@ TEST(stddata, list_bytes) {
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(stddata, bytes_list) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
__platform_printf("BEGIN\r\n");
|
||||
obj_run(pikaMain, "bytes([1,2,3,4])");
|
||||
/* collect */
|
||||
/* assert */
|
||||
EXPECT_STREQ(log_buff[0], "b'\\x01\\x02\\x03\\x04'\r\n");
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user