From: David F. <fr...@tu...> - 2009-05-26 16:25:37
|
Hi all, First, I'm using the 'talby' svn repository recommended by William. (Does anyone have a reasonable idea when these improvements will be incorporated into the trunk?) I've added the ability to expand the $descriptor(TYPE) construct within %perlcode. This is needed in order to generate additional package information in support of the boost intrusive_ptr work I'm doing. Does anyone see a difficulty with the way I've implemented this? I've included the output of 'svn diff perl5.cxx' below. Note: As you can see in the patch, I've initialized the 'addfail' variable to a value of 1. I think this should be a zero instead of a non-zero value, but as I reported earlier, if zero is used then the 'fail' label (and the corresponding error-handling code) isn't emitted, which causes problems in some situations. Setting this to '1' means that the fail label will always be emitted, of course, but this does ensure that the code will always compile. Until this problem is solved, I figure it's better to have code that compiles, even if this means there's an extra label in some of the functions, versus shorter code that doesn't always compile. Comments? If there are no difficulties, would someone be willing to commit these changes? Tx. -- David Fletcher Tuscany Design Automation, Inc. fr...@tu... 3030 S. College Ave, Suite 102 Ft. Collins, CO 80525 USA ===File /tmp/perl5.cxx.diff================================= Index: perl5.cxx =================================================================== --- perl5.cxx (revision 11232) +++ perl5.cxx (working copy) @@ -461,7 +461,7 @@ } Setattr(n, "wrap:name", wname); if(GetFlag(n, "perl5:instancevariable")) { - int addfail; + int addfail = 1; Printv(f->def, "SWIGCLASS_STATIC int ", wname, "(pTHX_ SV *sv, MAGIC *mg) {\n", NIL); @@ -1651,6 +1651,7 @@ virtual int insertDirective(Node *n) { String *code = Getattr(n, "code"); + Swig_cparse_replace_descriptor(code); String *section = Getattr(n, "section"); if ((!ImportMode) && (Cmp(section, "perl") == 0)) { ============================================================ |