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");
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -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
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user