| /* |
| This testcase tests that nested structs/unions work. Named structs/unions declared within |
| a struct produced redefinition errors in SWIG 1.3.6 as reported by SF bug #447488. |
| Also tests reported error when a #define placed in a deeply embedded struct/union. |
| */ |
| |
| %module nested |
| |
| |
| #if defined(SWIGSCILAB) |
| %rename(OutStNamed) OuterStructNamed; |
| %rename(InStNamed) OuterStructNamed::InnerStructNamed; |
| %rename(InUnNamed) OuterStructNamed::Inner_union_named; |
| #endif |
| |
| #if defined(SWIG_JAVASCRIPT_V8) |
| |
| %inline %{ |
| #if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) |
| /* for nested C class wrappers compiled as C++ code */ |
| /* dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] */ |
| #pragma GCC diagnostic ignored "-Wstrict-aliasing" |
| #endif |
| %} |
| |
| #endif |
| |
| %inline %{ |
| |
| struct TestStruct { |
| int a; |
| }; |
| |
| struct OuterStructNamed { |
| struct InnerStructNamed { |
| double dd; |
| } inner_struct_named; |
| union InnerUnionNamed { |
| double ee; |
| int ff; |
| } inner_union_named; |
| }; |
| |
| %} |
| |
| |
| #if !defined(SWIGSCILAB) |
| |
| %inline %{ |
| |
| struct OuterStructUnnamed { |
| struct { |
| double xx; |
| } inner_struct_unnamed; |
| union { |
| double yy; |
| int zz; |
| } inner_union_unnamed; |
| }; |
| |
| typedef struct OuterStruct { |
| union { |
| |
| struct outer_nested_struct { |
| union inner_nested_union { |
| #define BAD_STYLE 1 |
| int red; |
| struct TestStruct green; |
| } InnerNestedUnion; |
| |
| struct inner_nested_struct { |
| int blue; |
| } InnerNestedStruct; |
| } OuterNestedStruct; |
| |
| } EmbeddedUnion; |
| } OuterStruct; |
| |
| %} |
| |
| #else |
| |
| %inline %{ |
| |
| struct OutStUnnamed { |
| struct { |
| double xx; |
| } inSt; |
| union { |
| double yy; |
| int zz; |
| } inUn; |
| }; |
| |
| typedef struct OutSt { |
| union { |
| |
| struct nst_st { |
| union in_un { |
| #define BAD_STYLE 1 |
| int red; |
| struct TestStruct green; |
| } InUn; |
| |
| struct in_st { |
| int blue; |
| } InSt; |
| } NstdSt; |
| |
| } EmbedUn; |
| } OutSt; |
| |
| %} |
| |
| #endif |
| |
| |