add debug prints and avoid to attach an empty typemap
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8460 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
faec0c12fb
commit
1754322e59
1 changed files with 41 additions and 2 deletions
|
|
@ -16,13 +16,17 @@ char cvsroot_typemap_c[] = "$Header$";
|
||||||
#include "cparse.h"
|
#include "cparse.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#define SWIG_DEBUG
|
||||||
|
#endif
|
||||||
|
|
||||||
static void replace_embedded_typemap(String *s);
|
static void replace_embedded_typemap(String *s);
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Typemaps are stored in a collection of nested hash tables. Something like
|
* Typemaps are stored in a collection of nested hash tables. Something like
|
||||||
* this:
|
* this:
|
||||||
*
|
*
|
||||||
* [ type ]
|
xo * [ type ]
|
||||||
* +-------- [ name ]
|
* +-------- [ name ]
|
||||||
* +-------- [ name ]
|
* +-------- [ name ]
|
||||||
*
|
*
|
||||||
|
|
@ -1468,10 +1472,21 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
char *cop = Char(op);
|
char *cop = Char(op);
|
||||||
String *kwmatch = 0;
|
String *kwmatch = 0;
|
||||||
p = parms;
|
p = parms;
|
||||||
|
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"Swig_typemap_attach_parms: %s\n", op);
|
||||||
|
#endif
|
||||||
|
|
||||||
while (p) {
|
while (p) {
|
||||||
argnum++;
|
argnum++;
|
||||||
nmatch = 0;
|
nmatch = 0;
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"parms: %s %s %s\n", op, Getattr(p,k_name), Getattr(p,k_type));
|
||||||
|
#endif
|
||||||
tm = Swig_typemap_search_multi(op,p,&nmatch);
|
tm = Swig_typemap_search_multi(op,p,&nmatch);
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
if (tm) Printf(stdout,"found: %s\n", tm);
|
||||||
|
#endif
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
p = nextSibling(p);
|
p = nextSibling(p);
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -1491,6 +1506,9 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
String *tmname = NewStringf("tmap:%s",kwmatch);
|
String *tmname = NewStringf("tmap:%s",kwmatch);
|
||||||
Hash *tmin = Getattr(p,tmname);
|
Hash *tmin = Getattr(p,tmname);
|
||||||
Delete(tmname);
|
Delete(tmname);
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
if (tm) Printf(stdout,"matching: %s\n", kwmatch);
|
||||||
|
#endif
|
||||||
if (tmin) {
|
if (tmin) {
|
||||||
SwigType *typetm = Getattr(tm,k_type);
|
SwigType *typetm = Getattr(tm,k_type);
|
||||||
SwigType *typein = Getattr(tmin,k_type);
|
SwigType *typein = Getattr(tmin,k_type);
|
||||||
|
|
@ -1510,10 +1528,13 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
}
|
}
|
||||||
|
|
||||||
s = Getattr(tm,k_code);
|
s = Getattr(tm,k_code);
|
||||||
if (!s) {
|
if (!s || !Len(s)) {
|
||||||
p = nextSibling(p);
|
p = nextSibling(p);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
if (s) Printf(stdout,"code: %s\n", s);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Empty typemap. No match */
|
/* Empty typemap. No match */
|
||||||
if (Cmp(s,"pass") == 0) {
|
if (Cmp(s,"pass") == 0) {
|
||||||
|
|
@ -1525,12 +1546,16 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
locals = Getattr(tm,k_locals);
|
locals = Getattr(tm,k_locals);
|
||||||
if (locals) locals = CopyParmList(locals);
|
if (locals) locals = CopyParmList(locals);
|
||||||
firstp = p;
|
firstp = p;
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"nmatch: %d\n", nmatch);
|
||||||
|
#endif
|
||||||
for (i = 0; i < nmatch; i++) {
|
for (i = 0; i < nmatch; i++) {
|
||||||
SwigType *type;
|
SwigType *type;
|
||||||
String *pname;
|
String *pname;
|
||||||
String *lname;
|
String *lname;
|
||||||
SwigType *mtype;
|
SwigType *mtype;
|
||||||
|
|
||||||
|
|
||||||
type = Getattr(p,k_type);
|
type = Getattr(p,k_type);
|
||||||
pname = Getattr(p,k_name);
|
pname = Getattr(p,k_name);
|
||||||
lname = Getattr(p,k_lname);
|
lname = Getattr(p,k_lname);
|
||||||
|
|
@ -1561,6 +1586,9 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
Replace(s,"$argnum",temp, DOH_REPLACE_ANY);
|
Replace(s,"$argnum",temp, DOH_REPLACE_ANY);
|
||||||
|
|
||||||
/* Attach attributes to object */
|
/* Attach attributes to object */
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"attach: %s %s %s\n", Getattr(firstp,k_name), tmop_name(op), s);
|
||||||
|
#endif
|
||||||
Setattr(firstp,tmop_name(op),s); /* Code object */
|
Setattr(firstp,tmop_name(op),s); /* Code object */
|
||||||
|
|
||||||
if (locals) {
|
if (locals) {
|
||||||
|
|
@ -1585,7 +1613,15 @@ Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f)
|
||||||
/* increase argnum to consider numinputs */
|
/* increase argnum to consider numinputs */
|
||||||
argnum += nmatch - 1;
|
argnum += nmatch - 1;
|
||||||
Delete(s);
|
Delete(s);
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"res: %s %s %s\n", Getattr(firstp,k_name), tmop_name(op), Getattr(firstp,tmop_name(op)));
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"Swig_typemap_attach_parms: end\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
|
|
@ -1752,6 +1788,9 @@ static void replace_embedded_typemap(String *s) {
|
||||||
}
|
}
|
||||||
/* Perform a typemap search */
|
/* Perform a typemap search */
|
||||||
if (first) {
|
if (first) {
|
||||||
|
#ifdef SWIG_DEBUG
|
||||||
|
Printf(stdout,"Swig_typemap_attach_parms: embedded\n");
|
||||||
|
#endif
|
||||||
Swig_typemap_attach_parms(method,first,0);
|
Swig_typemap_attach_parms(method,first,0);
|
||||||
{
|
{
|
||||||
String *tm;
|
String *tm;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue