Common default argument code factored into functions

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6661 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2004-11-04 22:10:20 +00:00
commit b248a54dc8
2 changed files with 47 additions and 0 deletions

View file

@ -248,3 +248,48 @@ int ParmList_is_compactdefargs(ParmList *p) {
}
/* ---------------------------------------------------------------------
* ParmList_has_defaultargs()
*
* Returns 1 if the parameter list passed in is has one or more default
* arguments. Otherwise returns 0.
* ---------------------------------------------------------------------- */
int ParmList_has_defaultargs(ParmList *p) {
int default_args = 0;
while (p) {
if (Getattr(p, "value")) {
default_args = 1;
break;
}
p = nextSibling(p);
}
return default_args;
}
/* ---------------------------------------------------------------------
* ParmList_copy_all_except_last_parm()
*
* Create a new parameter list by copying all the parameters barring the
* last parameter.
* ---------------------------------------------------------------------- */
ParmList *ParmList_copy_all_except_last_parm(ParmList *p) {
ParmList* newparms = 0;
Parm *newparm = 0;
Parm *pp = 0;
Parm *fp = 0;
while (nextSibling(p)) {
newparm = CopyParm(p);
if (pp) {
set_nextSibling(pp,newparm);
} else {
fp = newparm;
}
pp = newparm;
p = nextSibling(p);
}
newparms = fp;
return newparms;
}

View file

@ -335,6 +335,8 @@ extern String *ParmList_str(ParmList *);
extern String *ParmList_str_defaultargs(ParmList *);
extern String *ParmList_protostr(ParmList *);
extern int ParmList_is_compactdefargs(ParmList *p);
extern int ParmList_has_defaultargs(ParmList *p);
extern ParmList *ParmList_copy_all_except_last_parm(ParmList *p);
/* --- Parse tree support --- */