From b4a79e00dd3b52d8271f3f5c939c3a4703bf7987 Mon Sep 17 00:00:00 2001 From: lyon Date: Thu, 24 Nov 2022 01:14:27 +0800 Subject: [PATCH] add obj/args_setNone() api --- src/PikaObj.c | 11 +++++++++++ src/PikaObj.h | 1 + src/dataArgs.c | 9 +++++++++ src/dataArgs.h | 1 + test/pikaMain-test.cpp | 9 +++++++++ 5 files changed, 31 insertions(+) diff --git a/src/PikaObj.c b/src/PikaObj.c index 6aa337de7..c453649a2 100644 --- a/src/PikaObj.c +++ b/src/PikaObj.c @@ -180,6 +180,7 @@ PIKA_RES obj_setFloat(PikaObj* self, char* argPath, pika_float value) { } PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str) { + pika_assert(NULL != str); PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { return PIKA_RES_ERR_ARG_NO_FOUND; @@ -189,6 +190,16 @@ PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str) { return PIKA_RES_OK; } +PIKA_RES obj_setNone(PikaObj* self, char* argPath) { + PikaObj* obj = obj_getHostObj(self, argPath); + if (NULL == obj) { + return PIKA_RES_ERR_ARG_NO_FOUND; + } + char* name = strPointToLastToken(argPath, '.'); + args_setNone(obj->list, name); + return PIKA_RES_OK; +} + PIKA_RES obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { diff --git a/src/PikaObj.h b/src/PikaObj.h index 124315bbf..264bcb922 100644 --- a/src/PikaObj.h +++ b/src/PikaObj.h @@ -162,6 +162,7 @@ PIKA_RES obj_setRef(PikaObj* self, char* argPath, PikaObj* pointer); PIKA_RES obj_setPtr(PikaObj* self, char* argPath, void* pointer); PIKA_RES obj_setFloat(PikaObj* self, char* argPath, pika_float value); PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str); +PIKA_RES obj_setNone(PikaObj* self, char* argPath); PIKA_RES obj_setArg(PikaObj* self, char* argPath, Arg* arg); PIKA_RES obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg); PIKA_RES obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size); diff --git a/src/dataArgs.c b/src/dataArgs.c index 7699d0e7a..c01d3236b 100644 --- a/src/dataArgs.c +++ b/src/dataArgs.c @@ -85,6 +85,7 @@ PIKA_RES args_setRef(Args* self, char* name, void* argPointer) { } PIKA_RES args_setStr(Args* self, char* name, char* strIn) { + pika_assert(NULL != strIn); PIKA_RES errCode = PIKA_RES_OK; Arg* argNew = New_arg(NULL); argNew = arg_setStr(argNew, name, strIn); @@ -95,6 +96,14 @@ PIKA_RES args_setStr(Args* self, char* name, char* strIn) { return errCode; } +PIKA_RES args_setNone(Args* self, char* name) { + PIKA_RES errCode = PIKA_RES_OK; + Arg* argNew = arg_newNull(); + arg_setName(argNew, name); + args_setArg(self, argNew); + return errCode; +} + PIKA_RES args_pushArg(Args* self, Arg* arg) { Arg* new_arg = NULL; if (!arg_isSerialized(arg)) { diff --git a/src/dataArgs.h b/src/dataArgs.h index 7526b2e99..81cb6d9de 100644 --- a/src/dataArgs.h +++ b/src/dataArgs.h @@ -57,6 +57,7 @@ int32_t args_isArgExist_hash(Args* self, Hash nameHash); int32_t args_isArgExist(Args* self, char* name); PIKA_RES args_setStr(Args* self, char* name, char* strIn); +PIKA_RES args_setNone(Args* self, char* name); PIKA_RES args_setStrWithDefaultName(Args* self, char* strIn); char* args_getStr(Args* self, char* name); diff --git a/test/pikaMain-test.cpp b/test/pikaMain-test.cpp index bda62b3dc..8fa0386ca 100644 --- a/test/pikaMain-test.cpp +++ b/test/pikaMain-test.cpp @@ -2830,4 +2830,13 @@ TEST(pikaMain, REPL_key_left_del) { EXPECT_EQ(pikaMemNow(), 0); } +TEST(pikaMain, obj_setNone) { + PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain); + obj_setNone(pikaMain, "n"); + obj_run(pikaMain, "print(n)"); + EXPECT_STREQ(log_buff[0], "None\r\n"); + obj_deinit(pikaMain); + EXPECT_EQ(pikaMemNow(), 0); +} + TEST_END \ No newline at end of file