[Insight-developers] Swig Wrapping Warnings.

William A. Hoffman billlist at nycap.rr.com
Mon, 05 Apr 2004 13:26:11 -0400


Perhaps we can add some cmake stuff to downgrade the warnings
just for the Wrapping part of the dashboard.   

-Bill


At 12:48 PM 4/5/2004, Hans J. Johnson wrote:
>Bill,
>
>OK.  I'll turn these off again.  About 2 weeks ago on the ITK
>teleconference call it was requested that these compiler flags be tuned
>on so that an attempt to fix this could be made.
>
>This means that I'll have to turn the warning flags off for all of ITK,
>and not just the wrapped part.
>
>Regards,
>Hans
>
>
>On Mon, 2004-04-05 at 11:00, William A. Hoffman wrote:
>> Since swig is a moving target, and we do updates from time to time, it may
>> be best to try and turn off warning checking for the generated code.  The
>> code is either correct or it is not, fixing warnings is not really a productive
>> exercise for swig generated wrappers.  Many times the problems show
>> up because C++ use const much more than C, swig generated code usually has
>> to be able to be compiled by an ANSI C compiler, and many of the warning fixes
>> break in C, but work in C++.
>> 
>> -Bill
>> 
>> 
>> At 11:33 AM 4/5/2004, Hans J. Johnson wrote:
>> >Hello Wrapping Experts,
>> >
>> >I've been attempting to get rid of compiler warnings from CableSwig tcl
>> >wrapped code.  The first set of changes were relativly easy to make, and
>> >eliminated about 7000 warnings.  Unfortunatly there are still about 5000
>> >warnings left to go.
>> >
>> >I beleive that one fix in cable swig will get rid of them, but I've been
>> >unable to successfully figure out how to do it.  The problem is that
>> >Swig chops off all const qualifiers for any local variable that will be
>> >an lvalue.  This is OK for non-pointer (non-reference) types, because
>> >the behavior does not affect the safety of the code, or it's use.  This,
>> >however, is not the case for pointers where the const is specified
>> >before the '*'.  
>> >
>> >e.g.
>> >===================================================================================================================
>> >static int
>> >_wrap_itkLightObject_GetNameOfClass(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
>> >    (void)clientData; (void)interp; (void)objc; (void)objv;
>> >    itk::LightObject *arg1 = (itk::LightObject *) 0 ;
>> >    char *result;
>> >
>> >    if (SWIG_GetArgs(interp, objc, objv,"o:itkLightObject_GetNameOfClass self ",0) == TCL_ERROR) SWIG_fail;
>> >    if ((SWIG_ConvertPtr(objv[1], (void **) &arg1, SWIGTYPE_p_itk__LightObject,SWIG_POINTER_EXCEPTION | 0) != TCL_OK)) SWIG_fail;
>> >    try {
>> >        result = (char *)((itk::LightObject const *)arg1)->GetNameOfClass();
>> >    }
>> >    catch(std::exception &_e) {
>> >        {
>> >            SWIG_exception(SWIG_RuntimeError, const_cast<char*>(_e.what()));
>> >        }
>> >    }
>> >    Tcl_SetObjResult(interp,Tcl_NewStringObj(result,-1));
>> >    return TCL_OK;
>> >    fail:
>> >    return TCL_ERROR;
>> >}
>> >===================================================================================================================
>> >Two changes could remove the compiler warnings in the previous code snip are: 
>> >(a) change the type of result to "const char * reusult;" and change/remove the type casting in the try block.
>> >(b) use a const_cast<char *>() in the try block instead of the c-style (char *)---(const char *) may also work.
>> >
>> >I've spent a few days trying to learn the swig wrapping mechanism well enough to make these changes, but have not
>> >found a complete working solution and have not been confident that the partial solutions would not break other 
>> >wrappings.  A patch that does the first 1/2 of option (a) is attached to this e-mail.  I could not track down where
>> >the second part was being constucted.
>> >
>> >I will not be able to devote any more time to this.
>> >
>> >Sorry,
>> >Hans J. Johnson
>> >hans-johnson at uiowa.edu
>> >
>> >
>> >
>
>_______________________________________________
>Insight-developers mailing list
>Insight-developers at itk.org
>http://www.itk.org/mailman/listinfo/insight-developers