diff --git a/src/package/pikascript/pikascript-core/PikaBlock.c b/src/package/pikascript/pikascript-core/PikaBlock.c index bacc2a842..5eb96819e 100644 --- a/src/package/pikascript/pikascript-core/PikaBlock.c +++ b/src/package/pikascript/pikascript-core/PikaBlock.c @@ -28,9 +28,9 @@ char *block_getBody(PikaObj *self) return obj_getStr(self, "body"); } -char *block_setBody(PikaObj *self, char *body) +void block_setBody(PikaObj *self, char *body) { - return obj_setStr(self, "body", body); + obj_setStr(self, "body", body); } uint8_t block_checkAssert(PikaObj *self) diff --git a/src/package/pikascript/pikascript-core/PikaBlock.h b/src/package/pikascript/pikascript-core/PikaBlock.h index 96a883679..a4b8c0c62 100644 --- a/src/package/pikascript/pikascript-core/PikaBlock.h +++ b/src/package/pikascript/pikascript-core/PikaBlock.h @@ -13,5 +13,5 @@ uint8_t block_checkAssert(PikaObj *self); uint16_t block_getLineSize(PikaObj *self); void block_setMode(PikaObj *self, char *mode); char *block_getMode(PikaObj *self); -char *block_setBody(PikaObj *self, char *body); +void block_setBody(PikaObj *self, char *body); #endif \ No newline at end of file diff --git a/src/package/pikascript/pikascript-core/PikaInvoke.c b/src/package/pikascript/pikascript-core/PikaInvoke.c index 26012e97b..0368b3856 100644 --- a/src/package/pikascript/pikascript-core/PikaInvoke.c +++ b/src/package/pikascript/pikascript-core/PikaInvoke.c @@ -8,16 +8,12 @@ static int32_t loadArgByType(PikaObj *self, char *definedName, char *definedType, - char *argPath, + char *sourceArgPath, Args *args) { if (strEqu(definedType, "any")) { - if (0 == args_setLiteral(args, definedName, argPath)) - { - return 0; - } - if (0 == obj_getRefArg(self, argPath, args)) + if (0 == obj_getAnyArg(self, definedName, sourceArgPath, args)) { return 0; } @@ -27,7 +23,7 @@ static int32_t loadArgByType(PikaObj *self, if (strEqu(definedType, "str")) { /* solve the string type */ - char *directStr = strsGetDirectStr(args, argPath); + char *directStr = strsGetDirectStr(args, sourceArgPath); if (NULL != directStr) { /* direct value */ @@ -36,7 +32,7 @@ static int32_t loadArgByType(PikaObj *self, return 0; } /* reference value */ - char *refStr = obj_getStr(self, argPath); + char *refStr = obj_getStr(self, sourceArgPath); if (NULL == refStr) { /* faild */ @@ -50,20 +46,20 @@ static int32_t loadArgByType(PikaObj *self, { /* solve the int32_t type */ args_setInt(args, definedName, 0); - if ((argPath[0] >= '0') && (argPath[0] <= '9')) + if ((sourceArgPath[0] >= '0') && (sourceArgPath[0] <= '9')) { /* direct value */ - args_set(args, definedName, argPath); + args_set(args, definedName, sourceArgPath); /* succeed */ return 0; } /* reference value */ - if (!obj_isArgExist(self, argPath)) + if (!obj_isArgExist(self, sourceArgPath)) { /* can not get reference */ return 3; } - int32_t referenceVal = obj_getInt(self, argPath); + int32_t referenceVal = obj_getInt(self, sourceArgPath); args_setInt(args, definedName, referenceVal); /* succeed */ return 0; @@ -72,20 +68,20 @@ static int32_t loadArgByType(PikaObj *self, { /* solve the float type */ args_setFloat(args, definedName, 0); - if ((argPath[0] >= '0') && (argPath[0] <= '9')) + if ((sourceArgPath[0] >= '0') && (sourceArgPath[0] <= '9')) { /* direct value */ - args_set(args, definedName, argPath); + args_set(args, definedName, sourceArgPath); /* succeed */ return 0; } /* reference value */ - if (!obj_isArgExist(self, argPath)) + if (!obj_isArgExist(self, sourceArgPath)) { /* can not get reference */ return 3; } - float referenceVal = obj_getFloat(self, argPath); + float referenceVal = obj_getFloat(self, sourceArgPath); args_setFloat(args, definedName, referenceVal); /* succeed */ return 0; @@ -93,12 +89,12 @@ static int32_t loadArgByType(PikaObj *self, if (strEqu(definedType, "pointer")) { /* only support reference value */ - if (!obj_isArgExist(self, argPath)) + if (!obj_isArgExist(self, sourceArgPath)) { /* can not get reference */ return 3; } - void *ptr = obj_getPtr(self, argPath); + void *ptr = obj_getPtr(self, sourceArgPath); args_setPtr(args, definedName, ptr); return 0; } diff --git a/src/package/pikascript/pikascript-core/PikaObj.c b/src/package/pikascript/pikascript-core/PikaObj.c index dab63131e..042e13c55 100644 --- a/src/package/pikascript/pikascript-core/PikaObj.c +++ b/src/package/pikascript/pikascript-core/PikaObj.c @@ -534,17 +534,31 @@ char *getRightCmd(Args *buffs, char *cmd) return right; } -uint8_t obj_getRefArg(PikaObj *self, char *argPath, Args *targetArgs) +uint8_t obj_getAnyArg(PikaObj *self, char *targetArgName, char *sourceArgPath, Args *targetArgs) +{ + if (0 == args_setLiteral(targetArgs, targetArgName, sourceArgPath)) + { + return 0; + } + if (0 == obj_getRefArg(self, sourceArgPath, sourceArgPath, targetArgs)) + { + return 0; + } + /* solve arg faild */ + return 3; +} + +uint8_t obj_getRefArg(PikaObj *self, char *targetArgName, char *sourceArgPath, Args *targetArgs) { /* get reference arg */ - Arg *arg = obj_getArg(self, argPath); + Arg *arg = obj_getArg(self, sourceArgPath); if (arg == NULL) { /* can not get arg */ return 3; } Arg *argCopied = arg_copy(arg); - argCopied = arg_setName(argCopied, argPath); + argCopied = arg_setName(argCopied, targetArgName); args_setArg(targetArgs, argCopied); return 0; } diff --git a/src/package/pikascript/pikascript-core/PikaObj.h b/src/package/pikascript/pikascript-core/PikaObj.h index c80902c13..69cdeb6e7 100644 --- a/src/package/pikascript/pikascript-core/PikaObj.h +++ b/src/package/pikascript/pikascript-core/PikaObj.h @@ -81,6 +81,7 @@ void args_setSysOut(Args *args, char *str); char *obj_getSysOut(PikaObj *self); void obj_sysPrintf(PikaObj *self, char *fmt, ...); PikaObj *obj_getContext(PikaObj *self); -uint8_t obj_getRefArg(PikaObj *self, char *argPath, Args *targetArgs); +uint8_t obj_getRefArg(PikaObj *self, char *targetArgName, char *sourceArgPath, Args *targetArgs); +uint8_t obj_getAnyArg(PikaObj *self, char *targetArgName, char *sourceArgPath, Args *targetArgs); #endif diff --git a/src/package/pikascript/pikascript-core/dataArgs.c b/src/package/pikascript/pikascript-core/dataArgs.c index 7eaae7747..fd30d0c1e 100644 --- a/src/package/pikascript/pikascript-core/dataArgs.c +++ b/src/package/pikascript/pikascript-core/dataArgs.c @@ -384,7 +384,7 @@ exit: return res; } -uint8_t args_setLiteral(Args *self, char *name, char *literal) +uint8_t args_setLiteral(Args *self, char *targetArgName, char *literal) { Args *buffs = New_strBuff(); literal = strsGetCleanCmd(buffs, literal); @@ -394,7 +394,7 @@ uint8_t args_setLiteral(Args *self, char *name, char *literal) if (NULL != directStr) { /* direct string value */ - args_setStr(self, name, directStr); + args_setStr(self, targetArgName, directStr); /* ok */ err = 0; goto exit; @@ -405,15 +405,15 @@ uint8_t args_setLiteral(Args *self, char *name, char *literal) /* match float num */ if (strIsContain(literal, '.')) { - args_setFloat(self, name, 0); - args_set(self, name, literal); + args_setFloat(self, targetArgName, 0); + args_set(self, targetArgName, literal); /* succeed */ err = 0; goto exit; } /* match int num */ - args_setInt(self, name, 0); - args_set(self, name, literal); + args_setInt(self, targetArgName, 0); + args_set(self, targetArgName, literal); /* succeed */ err = 0; goto exit; diff --git a/src/package/pikascript/pikascript-core/dataArgs.h b/src/package/pikascript/pikascript-core/dataArgs.h index 7d1fce800..8acf8982f 100644 --- a/src/package/pikascript/pikascript-core/dataArgs.h +++ b/src/package/pikascript/pikascript-core/dataArgs.h @@ -52,7 +52,7 @@ int32_t args_setPtrWithType(Args *self, char *objName, char *type, void *objPtr) int32_t args_foreach (Args *self,int32_t (*eachHandle)(Arg *argEach, Args *handleArgs), Args * handleArgs); char *args_getBuff(Args *self,int32_t size); -uint8_t args_setLiteral(Args *self, char *argPath, char *literal); +uint8_t args_setLiteral(Args *self, char *targetArgName, char *literal); Args *New_args(Args *args); #endif