Functions | |
| def | append |
| def | count |
| def | extend |
| def | index |
| def | insert |
| def | pop |
| def | remove |
Notes:
| def list::append | ( | l, | ||
| o | ||||
| ) |
__NATIVE__
pPmObj_t pl;
PmReturn_t retval = PM_RET_OK;
/* Raise TypeError if it's not a list or wrong number of args, */
pl = NATIVE_GET_LOCAL(0);
if ((OBJ_GET_TYPE(pl) != OBJ_TYPE_LST) || (NATIVE_GET_NUM_ARGS() != 2))
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
/* Append the object to the list */
retval = list_append(pl, NATIVE_GET_LOCAL(1));
NATIVE_SET_TOS(PM_NONE);
return retval;
| def list::index | ( | l, | ||
| o | ||||
| ) |
__NATIVE__
pPmObj_t pl;
pPmObj_t po;
pPmObj_t pi;
PmReturn_t retval = PM_RET_OK;
uint16_t i;
/* Raise TypeError if it's not a list or wrong number of args, */
pl = NATIVE_GET_LOCAL(0);
if ((OBJ_GET_TYPE(pl) != OBJ_TYPE_LST) || (NATIVE_GET_NUM_ARGS() != 2))
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
/* Get the index of the object in the list */
po = NATIVE_GET_LOCAL(1);
retval = list_index(pl, po, &i);
if (retval == PM_RET_EX_VAL)
{
PM_RAISE(retval, PM_RET_EX_VAL);
return retval;
}
int_new((int32_t)i, &pi);
NATIVE_SET_TOS(pi);
return retval;
| def list::insert | ( | l, | ||
| i, | ||||
| o | ||||
| ) |
__NATIVE__
pPmObj_t pl;
pPmObj_t pi;
pPmObj_t po;
PmReturn_t retval = PM_RET_OK;
uint16_t i;
/*
* Raise TypeError if wrong number of args, first arg is not a list, or
* second arg is not an int
*/
pl = NATIVE_GET_LOCAL(0);
pi = NATIVE_GET_LOCAL(1);
po = NATIVE_GET_LOCAL(2);
if ((NATIVE_GET_NUM_ARGS() != 3)
|| (OBJ_GET_TYPE(pl) != OBJ_TYPE_LST)
|| (OBJ_GET_TYPE(pi) != OBJ_TYPE_INT) )
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
/* Insert the object before the given index */
i = (uint16_t)((pPmInt_t)pi)->val;
retval = list_insert(pl, i, po);
if (retval != PM_RET_OK)
{
PM_RAISE(retval, PM_RET_EX_SYS);
}
NATIVE_SET_TOS(PM_NONE);
return retval;
| def list::pop | ( | l, | ||
| i | ||||
| ) |
__NATIVE__
pPmObj_t pl;
pPmObj_t pi;
pPmObj_t po;
PmReturn_t retval = PM_RET_OK;
int16_t i;
/*
* Raise TypeError if first arg is not a list o second arg is not an int
* or there are the wrong number of arguments
*/
pl = NATIVE_GET_LOCAL(0);
if (OBJ_GET_TYPE(pl) != OBJ_TYPE_LST)
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
pi = NATIVE_GET_LOCAL(1);
if (NATIVE_GET_NUM_ARGS() == 2)
{
if (OBJ_GET_TYPE(pi) != OBJ_TYPE_INT)
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
i = (uint16_t)((pPmInt_t)pi)->val;
}
else
{
i = -1;
}
if ((NATIVE_GET_NUM_ARGS() < 1) || (NATIVE_GET_NUM_ARGS() > 2))
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
/* Get the object at the given index */
retval = list_getItem(pl, i, &po);
PM_RETURN_IF_ERROR(retval);
/* Return the object to the caller */
NATIVE_SET_TOS(po);
/* Remove the object from the given index */
retval = list_delItem(pl, i);
PM_RETURN_IF_ERROR(retval);
return retval;
| def list::remove | ( | l, | ||
| v | ||||
| ) |
__NATIVE__
pPmObj_t pl;
pPmObj_t pv;
PmReturn_t retval = PM_RET_OK;
/* Raise TypeError if it's not a list or wrong number of args, */
pl = NATIVE_GET_LOCAL(0);
if ((OBJ_GET_TYPE(pl) != OBJ_TYPE_LST) || (NATIVE_GET_NUM_ARGS() != 2))
{
PM_RAISE(retval, PM_RET_EX_TYPE);
return retval;
}
/* Remove the value from the list */
pv = NATIVE_GET_LOCAL(1);
retval = list_remove(pl, pv);
if (retval != PM_RET_OK)
{
PM_RAISE(retval, retval);
}
NATIVE_SET_TOS(PM_NONE);
return retval;
1.5.9