add speed for args_set<> api

This commit is contained in:
pikastech 2022-08-17 10:46:26 +08:00
parent 5354708450
commit fbb6f28cb2

View File

@ -42,9 +42,12 @@ void args_deinit_stack(Args* self) {
} }
PIKA_RES args_setFloat(Args* self, char* name, double argFloat) { PIKA_RES args_setFloat(Args* self, char* name, double argFloat) {
Arg* argNew = New_arg(NULL); Arg* arg = args_getArg(self, name);
argNew = arg_setFloat(argNew, name, argFloat); Arg* arg_new = arg_setFloat(arg, name, argFloat);
args_setArg(self, argNew); if (arg == arg_new) {
return PIKA_RES_OK;
}
args_setArg(self, arg_new);
return PIKA_RES_OK; return PIKA_RES_OK;
} }
@ -60,11 +63,7 @@ void* args_getPtr(Args* self, char* name) {
} }
PIKA_RES args_setPtr(Args* self, char* name, void* argPointer) { PIKA_RES args_setPtr(Args* self, char* name, void* argPointer) {
PIKA_RES errCode = PIKA_RES_OK; return args_setPtrWithType(self, name, ARG_TYPE_POINTER, argPointer);
Arg* argNew = New_arg(NULL);
argNew = arg_setPtr(argNew, name, ARG_TYPE_POINTER, argPointer);
args_setArg(self, argNew);
return errCode;
} }
PIKA_RES args_setRef(Args* self, char* name, void* argPointer) { PIKA_RES args_setRef(Args* self, char* name, void* argPointer) {
@ -154,9 +153,13 @@ size_t args_getBytesSize(Args* self, char* name) {
} }
PIKA_RES args_setInt(Args* self, char* name, int64_t int64In) { PIKA_RES args_setInt(Args* self, char* name, int64_t int64In) {
Arg* argNew = New_arg(NULL); Arg* arg = args_getArg(self, name);
argNew = arg_setInt(argNew, name, int64In); Arg* arg_new = arg_setInt(arg, name, int64In);
args_setArg(self, argNew); if (arg_new == arg) {
/* arg_new is a new alloced arg */
return PIKA_RES_OK;
}
args_setArg(self, arg_new);
return PIKA_RES_OK; return PIKA_RES_OK;
} }
@ -367,7 +370,6 @@ Arg* args_getArg_hash(Args* self, Hash nameHash) {
return (Arg*)node; return (Arg*)node;
} }
Arg* args_getArg(Args* self, char* name) { Arg* args_getArg(Args* self, char* name) {
LinkNode* node = args_getNode(self, name); LinkNode* node = args_getNode(self, name);
if (NULL == node) { if (NULL == node) {
@ -472,10 +474,14 @@ PIKA_RES args_setPtrWithType(Args* self,
char* name, char* name,
ArgType type, ArgType type,
void* objPtr) { void* objPtr) {
Arg* argNew = New_arg(NULL); PIKA_RES errCode = PIKA_RES_OK;
argNew = arg_setPtr(argNew, name, type, objPtr); Arg* arg = args_getArg(self, name);
args_setArg(self, argNew); Arg* arg_new = arg_setPtr(arg, name, type, objPtr);
return PIKA_RES_OK; if (arg == arg_new) {
return errCode;
}
args_setArg(self, arg_new);
return errCode;
} }
PIKA_RES args_foreach(Args* self, PIKA_RES args_foreach(Args* self,