mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
obj -get any arg is ok
This commit is contained in:
parent
4f8ab57dc7
commit
7d0c6c8148
@ -28,9 +28,9 @@ char *block_getBody(PikaObj *self)
|
|||||||
return obj_getStr(self, "body");
|
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)
|
uint8_t block_checkAssert(PikaObj *self)
|
||||||
|
@ -13,5 +13,5 @@ uint8_t block_checkAssert(PikaObj *self);
|
|||||||
uint16_t block_getLineSize(PikaObj *self);
|
uint16_t block_getLineSize(PikaObj *self);
|
||||||
void block_setMode(PikaObj *self, char *mode);
|
void block_setMode(PikaObj *self, char *mode);
|
||||||
char *block_getMode(PikaObj *self);
|
char *block_getMode(PikaObj *self);
|
||||||
char *block_setBody(PikaObj *self, char *body);
|
void block_setBody(PikaObj *self, char *body);
|
||||||
#endif
|
#endif
|
@ -8,16 +8,12 @@
|
|||||||
static int32_t loadArgByType(PikaObj *self,
|
static int32_t loadArgByType(PikaObj *self,
|
||||||
char *definedName,
|
char *definedName,
|
||||||
char *definedType,
|
char *definedType,
|
||||||
char *argPath,
|
char *sourceArgPath,
|
||||||
Args *args)
|
Args *args)
|
||||||
{
|
{
|
||||||
if (strEqu(definedType, "any"))
|
if (strEqu(definedType, "any"))
|
||||||
{
|
{
|
||||||
if (0 == args_setLiteral(args, definedName, argPath))
|
if (0 == obj_getAnyArg(self, definedName, sourceArgPath, args))
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (0 == obj_getRefArg(self, argPath, args))
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -27,7 +23,7 @@ static int32_t loadArgByType(PikaObj *self,
|
|||||||
if (strEqu(definedType, "str"))
|
if (strEqu(definedType, "str"))
|
||||||
{
|
{
|
||||||
/* solve the string type */
|
/* solve the string type */
|
||||||
char *directStr = strsGetDirectStr(args, argPath);
|
char *directStr = strsGetDirectStr(args, sourceArgPath);
|
||||||
if (NULL != directStr)
|
if (NULL != directStr)
|
||||||
{
|
{
|
||||||
/* direct value */
|
/* direct value */
|
||||||
@ -36,7 +32,7 @@ static int32_t loadArgByType(PikaObj *self,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* reference value */
|
/* reference value */
|
||||||
char *refStr = obj_getStr(self, argPath);
|
char *refStr = obj_getStr(self, sourceArgPath);
|
||||||
if (NULL == refStr)
|
if (NULL == refStr)
|
||||||
{
|
{
|
||||||
/* faild */
|
/* faild */
|
||||||
@ -50,20 +46,20 @@ static int32_t loadArgByType(PikaObj *self,
|
|||||||
{
|
{
|
||||||
/* solve the int32_t type */
|
/* solve the int32_t type */
|
||||||
args_setInt(args, definedName, 0);
|
args_setInt(args, definedName, 0);
|
||||||
if ((argPath[0] >= '0') && (argPath[0] <= '9'))
|
if ((sourceArgPath[0] >= '0') && (sourceArgPath[0] <= '9'))
|
||||||
{
|
{
|
||||||
/* direct value */
|
/* direct value */
|
||||||
args_set(args, definedName, argPath);
|
args_set(args, definedName, sourceArgPath);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* reference value */
|
/* reference value */
|
||||||
if (!obj_isArgExist(self, argPath))
|
if (!obj_isArgExist(self, sourceArgPath))
|
||||||
{
|
{
|
||||||
/* can not get reference */
|
/* can not get reference */
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
int32_t referenceVal = obj_getInt(self, argPath);
|
int32_t referenceVal = obj_getInt(self, sourceArgPath);
|
||||||
args_setInt(args, definedName, referenceVal);
|
args_setInt(args, definedName, referenceVal);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
return 0;
|
return 0;
|
||||||
@ -72,20 +68,20 @@ static int32_t loadArgByType(PikaObj *self,
|
|||||||
{
|
{
|
||||||
/* solve the float type */
|
/* solve the float type */
|
||||||
args_setFloat(args, definedName, 0);
|
args_setFloat(args, definedName, 0);
|
||||||
if ((argPath[0] >= '0') && (argPath[0] <= '9'))
|
if ((sourceArgPath[0] >= '0') && (sourceArgPath[0] <= '9'))
|
||||||
{
|
{
|
||||||
/* direct value */
|
/* direct value */
|
||||||
args_set(args, definedName, argPath);
|
args_set(args, definedName, sourceArgPath);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* reference value */
|
/* reference value */
|
||||||
if (!obj_isArgExist(self, argPath))
|
if (!obj_isArgExist(self, sourceArgPath))
|
||||||
{
|
{
|
||||||
/* can not get reference */
|
/* can not get reference */
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
float referenceVal = obj_getFloat(self, argPath);
|
float referenceVal = obj_getFloat(self, sourceArgPath);
|
||||||
args_setFloat(args, definedName, referenceVal);
|
args_setFloat(args, definedName, referenceVal);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
return 0;
|
return 0;
|
||||||
@ -93,12 +89,12 @@ static int32_t loadArgByType(PikaObj *self,
|
|||||||
if (strEqu(definedType, "pointer"))
|
if (strEqu(definedType, "pointer"))
|
||||||
{
|
{
|
||||||
/* only support reference value */
|
/* only support reference value */
|
||||||
if (!obj_isArgExist(self, argPath))
|
if (!obj_isArgExist(self, sourceArgPath))
|
||||||
{
|
{
|
||||||
/* can not get reference */
|
/* can not get reference */
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
void *ptr = obj_getPtr(self, argPath);
|
void *ptr = obj_getPtr(self, sourceArgPath);
|
||||||
args_setPtr(args, definedName, ptr);
|
args_setPtr(args, definedName, ptr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -534,17 +534,31 @@ char *getRightCmd(Args *buffs, char *cmd)
|
|||||||
return right;
|
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 */
|
/* get reference arg */
|
||||||
Arg *arg = obj_getArg(self, argPath);
|
Arg *arg = obj_getArg(self, sourceArgPath);
|
||||||
if (arg == NULL)
|
if (arg == NULL)
|
||||||
{
|
{
|
||||||
/* can not get arg */
|
/* can not get arg */
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
Arg *argCopied = arg_copy(arg);
|
Arg *argCopied = arg_copy(arg);
|
||||||
argCopied = arg_setName(argCopied, argPath);
|
argCopied = arg_setName(argCopied, targetArgName);
|
||||||
args_setArg(targetArgs, argCopied);
|
args_setArg(targetArgs, argCopied);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -81,6 +81,7 @@ void args_setSysOut(Args *args, char *str);
|
|||||||
char *obj_getSysOut(PikaObj *self);
|
char *obj_getSysOut(PikaObj *self);
|
||||||
void obj_sysPrintf(PikaObj *self, char *fmt, ...);
|
void obj_sysPrintf(PikaObj *self, char *fmt, ...);
|
||||||
PikaObj *obj_getContext(PikaObj *self);
|
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
|
#endif
|
||||||
|
@ -384,7 +384,7 @@ exit:
|
|||||||
return res;
|
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();
|
Args *buffs = New_strBuff();
|
||||||
literal = strsGetCleanCmd(buffs, literal);
|
literal = strsGetCleanCmd(buffs, literal);
|
||||||
@ -394,7 +394,7 @@ uint8_t args_setLiteral(Args *self, char *name, char *literal)
|
|||||||
if (NULL != directStr)
|
if (NULL != directStr)
|
||||||
{
|
{
|
||||||
/* direct string value */
|
/* direct string value */
|
||||||
args_setStr(self, name, directStr);
|
args_setStr(self, targetArgName, directStr);
|
||||||
/* ok */
|
/* ok */
|
||||||
err = 0;
|
err = 0;
|
||||||
goto exit;
|
goto exit;
|
||||||
@ -405,15 +405,15 @@ uint8_t args_setLiteral(Args *self, char *name, char *literal)
|
|||||||
/* match float num */
|
/* match float num */
|
||||||
if (strIsContain(literal, '.'))
|
if (strIsContain(literal, '.'))
|
||||||
{
|
{
|
||||||
args_setFloat(self, name, 0);
|
args_setFloat(self, targetArgName, 0);
|
||||||
args_set(self, name, literal);
|
args_set(self, targetArgName, literal);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
err = 0;
|
err = 0;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
/* match int num */
|
/* match int num */
|
||||||
args_setInt(self, name, 0);
|
args_setInt(self, targetArgName, 0);
|
||||||
args_set(self, name, literal);
|
args_set(self, targetArgName, literal);
|
||||||
/* succeed */
|
/* succeed */
|
||||||
err = 0;
|
err = 0;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
@ -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);
|
int32_t args_foreach (Args *self,int32_t (*eachHandle)(Arg *argEach, Args *handleArgs), Args * handleArgs);
|
||||||
|
|
||||||
char *args_getBuff(Args *self,int32_t size);
|
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);
|
Args *New_args(Args *args);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user