From: William S F. <ws...@fu...> - 2010-12-11 16:56:15
|
Rush Manbert wrote: > I am trying to use SWIG to wrap some C/C++ code for access from Java. I'm using version 1.3.40. > > I am getting warnings of the form: > Warning(312): Nested union not currently supported (ignored). > > because of code like this: > > typedef struct > { > int a; > union > { > int u1; > bool u2; > } > { MyStruct_T; > > (Of course, the real thing is much more complicated than this.) > > I assume that if I did something like this: > > typedef union > { > int u1; > bool u2; > } MyUnion_T; > > typedef struct > { > int a; > MyUnion_T u; > } MyStruct_T; > > then SWIG could handle it, but from what I have read, it looks like the anonymous union case is not handled. > > I'm hoping that I have either missed something, or that there is some other workaround for wrapping an anonymous union like this. Nested structs/unions etc is a weak point in SWIG, although it got somewhat better in 2.0.0, so you could try upgrading. If your code is c++ and presumably also passing the -c++ option to SWIG, the nested class/union support is limited. However, even if your code is C code, anonymous structs/unions are not currently supported. No one so far has put in the effort to support them. Workaround is to not use a named union. See http://www.swig.org/Doc2.0/SWIG.html#SWIG_nested_structs for C nested struct support and for the fairly recently updated C++ support: http://www.swig.org/Doc2.0/SWIGPlus.html#SWIGPlus_nested_classes . William |