From: Joseph W. <dr...@us...> - 2006-08-21 22:49:03
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv11498 Modified Files: r.cxx Log Message: add methods call and deref for functor and dereferencing operators add hash to make sure that each method only appears once Index: r.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/r.cxx,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** r.cxx 29 Jul 2006 06:29:10 -0000 1.6 --- r.cxx 21 Aug 2006 22:48:58 -0000 1.7 *************** *** 1003,1009 **** Printf(f->code, "{\n"); Printf(f->code, "%saccessorFuns = list(", tab8); ! for(j = 0; j < numMems; j+=3) { String *item = Getitem(el, j); if (!Strcmp(item, "__getitem__")) has_getitem = 1; if (!Strcmp(item, "__setitem__")) has_setitem = 1; --- 1003,1013 ---- Printf(f->code, "{\n"); Printf(f->code, "%saccessorFuns = list(", tab8); ! ! Node *itemList = NewHash(); for(j = 0; j < numMems; j+=3) { String *item = Getitem(el, j); + if (Getattr(itemList, item)) + continue; + Setattr(itemList, item, "1"); if (!Strcmp(item, "__getitem__")) has_getitem = 1; if (!Strcmp(item, "__setitem__")) has_setitem = 1; *************** *** 1016,1021 **** if (!strcmp(ptr, "get")) varaccessor++; ! Printf(f->code, "'%s' = %s%s", item, dup, j < numMems - 3 ? ", " : ""); } Printf(f->code, ")\n"); --- 1020,1040 ---- if (!strcmp(ptr, "get")) varaccessor++; ! ! String *pitem; ! if (!Strcmp(item, "operator ()")) { ! pitem = NewString("call"); ! } else if (!Strcmp(item, "operator ->")) { ! pitem = NewString("deref"); ! } else if (!Strcmp(item, "operator +")) { ! pitem = NewString("add"); ! } else if (!Strcmp(item, "operator -")) { ! pitem = NewString("sub"); ! } else { ! pitem = Copy(item); ! } ! Printf(f->code, "'%s' = %s%s", pitem, dup, j < numMems - 3 ? ", " : ""); ! Delete(pitem); } + Delete(itemList); Printf(f->code, ")\n"); |