Refactor Swig_cparse_template_parms_expand()

Break up functionality in Swig_cparse_template_parms_expand() to make it
more readable / maintainable.
This commit is contained in:
William S Fulton 2022-12-12 23:37:21 +00:00
commit 1e73045da8
5 changed files with 141 additions and 66 deletions

View file

@ -113,7 +113,47 @@ ParmList *CopyParmList(ParmList *p) {
}
/* -----------------------------------------------------------------------------
* int ParmList_numrequired(). Return number of required arguments
* ParmList_join()
*
* Join two parameter lists. Appends p2 to the end of p.
* No copies are made.
* Returns start of joined parameter list.
* ----------------------------------------------------------------------------- */
ParmList *ParmList_join(ParmList *p, ParmList *p2) {
Parm *firstparm = p ? p : p2;
Parm *lastparm = p;
while (p) {
p = nextSibling(p);
if (p)
lastparm = p;
}
if (lastparm)
set_nextSibling(lastparm, p2);
return firstparm;
}
/* -----------------------------------------------------------------------------
* ParmList_nth_parm()
*
* return the nth parameter (0 based) in the parameter list
* ----------------------------------------------------------------------------- */
Parm *ParmList_nth_parm(ParmList *p, unsigned int n) {
while (p) {
if (n == 0)
break;
n--;
p = nextSibling(p);
}
return p;
}
/* -----------------------------------------------------------------------------
* ParmList_numrequired()
*
* Return number of required arguments
* ----------------------------------------------------------------------------- */
int ParmList_numrequired(ParmList *p) {

View file

@ -19,10 +19,12 @@ extern Parm *NewParmNode(SwigType *type, Node *from_node);
extern Parm *CopyParm(Parm *p);
/* Parameter lists */
extern ParmList *CopyParmList(ParmList *);
extern ParmList *CopyParmListMax(ParmList *, int count);
extern int ParmList_len(ParmList *);
extern ParmList *CopyParmList(ParmList *p);
extern ParmList *CopyParmListMax(ParmList *p, int count);
extern ParmList *ParmList_join(ParmList *p, ParmList *p2);
extern Parm *ParmList_nth_parm(ParmList *p, unsigned int n);
extern int ParmList_numrequired(ParmList *);
extern int ParmList_len(ParmList *);
extern int ParmList_has_defaultargs(ParmList *p);
extern int ParmList_has_varargs(ParmList *p);