[Insight-developers] Swig Wrapping Warnings.
Luis Ibanez
luis.ibanez at kitware.com
Tue, 06 Apr 2004 12:59:57 -0400
Hi Hans,
As a suggestion...
I found useful to separate the Wrapping build from the
standard ITK build in terminus.kitware. That is, there
is a normal build and there is a separate build only for
wrapping which has C++_TEST disabled. In that way you
can manage to have a high level of warnings for the
standard build and then a more relaxed setup for the
wrapping build.
My 2 cents,
Luis
----------------------
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
>