mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
support bytes add bytes
This commit is contained in:
parent
43d65eabc6
commit
a97212a5b3
2
port/linux/.vscode/launch.json
vendored
2
port/linux/.vscode/launch.json
vendored
@ -11,7 +11,7 @@
|
|||||||
"program": "${workspaceFolder}/build/test/pikascript_test",
|
"program": "${workspaceFolder}/build/test/pikascript_test",
|
||||||
// "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain",
|
// "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain",
|
||||||
"args": [
|
"args": [
|
||||||
"--gtest_filter=module.REPL_big_script"
|
"--gtest_filter=stddata.bytes_add"
|
||||||
],
|
],
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
|
3
port/linux/.vscode/settings.json
vendored
3
port/linux/.vscode/settings.json
vendored
@ -69,7 +69,8 @@
|
|||||||
"gtesttask_proxytest.h": "c",
|
"gtesttask_proxytest.h": "c",
|
||||||
"datastack.h": "c",
|
"datastack.h": "c",
|
||||||
"syscall.h": "c",
|
"syscall.h": "c",
|
||||||
"fcntl.h": "c"
|
"fcntl.h": "c",
|
||||||
|
"pikastddata_bytearray.h": "c"
|
||||||
},
|
},
|
||||||
"python.formatting.provider": "autopep8",
|
"python.formatting.provider": "autopep8",
|
||||||
"C_Cpp.errorSquiggles": "Disabled"
|
"C_Cpp.errorSquiggles": "Disabled"
|
||||||
|
11
src/PikaVM.c
11
src/PikaVM.c
@ -1861,6 +1861,17 @@ static void _OPT_ADD(OperatorInfo* op) {
|
|||||||
strsDeinit(&str_opt_buffs);
|
strsDeinit(&str_opt_buffs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ((op->t1 == ARG_TYPE_BYTES) && (op->t2 == ARG_TYPE_BYTES)) {
|
||||||
|
uint8_t* bytes1 = arg_getBytes(op->a1);
|
||||||
|
uint8_t* bytes2 = arg_getBytes(op->a2);
|
||||||
|
size_t size1 = arg_getBytesSize(op->a1);
|
||||||
|
size_t size2 = arg_getBytesSize(op->a2);
|
||||||
|
op->res = arg_setBytes(op->res, "", NULL, size1 + size2);
|
||||||
|
uint8_t* bytes_out = arg_getBytes(op->res);
|
||||||
|
__platform_memcpy(bytes_out, bytes1, size1);
|
||||||
|
__platform_memcpy(bytes_out + size1, bytes2, size2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* match float */
|
/* match float */
|
||||||
if ((op->t1 == ARG_TYPE_FLOAT) || op->t2 == ARG_TYPE_FLOAT) {
|
if ((op->t1 == ARG_TYPE_FLOAT) || op->t2 == ARG_TYPE_FLOAT) {
|
||||||
op->res = arg_setFloat(op->res, "", op->f1 + op->f2);
|
op->res = arg_setFloat(op->res, "", op->f1 + op->f2);
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
#define PIKA_VERSION_MINOR 11
|
#define PIKA_VERSION_MINOR 11
|
||||||
#define PIKA_VERSION_MICRO 6
|
#define PIKA_VERSION_MICRO 6
|
||||||
|
|
||||||
#define PIKA_EDIT_TIME "2022/11/09 01:42:09"
|
#define PIKA_EDIT_TIME "2022/11/09 16:42:07"
|
||||||
|
@ -492,6 +492,21 @@ TEST(stddata, kw_fun_err_input) {
|
|||||||
EXPECT_EQ(pikaMemNow(), 0);
|
EXPECT_EQ(pikaMemNow(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(stddata, bytes_add) {
|
||||||
|
/* init */
|
||||||
|
pikaMemInfo.heapUsedMax = 0;
|
||||||
|
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||||
|
/* run */
|
||||||
|
__platform_printf("BEGIN\r\n");
|
||||||
|
obj_run(pikaMain, "b'a' + b'b'\n");
|
||||||
|
/* collect */
|
||||||
|
/* assert */
|
||||||
|
EXPECT_STREQ(log_buff[0], "b'\\x61\\x62'\r\n");
|
||||||
|
/* deinit */
|
||||||
|
obj_deinit(pikaMain);
|
||||||
|
EXPECT_EQ(pikaMemNow(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TEST_END
|
TEST_END
|
Loading…
x
Reference in New Issue
Block a user