scilab: fix union and nested tests (they are C and not CPP tests)

This commit is contained in:
Simon Marchetto 2014-10-13 15:19:05 +02:00
commit 07eb661565
2 changed files with 72 additions and 17 deletions

View file

@ -7,19 +7,10 @@ Also tests reported error when a #define placed in a deeply embedded struct/unio
%module nested %module nested
#ifdef SWIGSCILAB #if defined(SWIGSCILAB)
%rename(OutStNamed) OuterStructNamed; %rename(OutStNamed) OuterStructNamed;
%rename(InStNamed) OuterStructUnnamed::InnerStructNamed; %rename(InStNamed) OuterStructNamed::InnerStructNamed;
%rename(InUnNamed) OuterStructUnnamed::Inner_union_named; %rename(InUnNamed) OuterStructNamed::Inner_union_named;
%rename(OutStUnnamed) OuterStructUnnamed;
%rename(inStUnnamed) OuterStructUnnamed::inner_struct_unnamed;
%rename(inUnUnnamed) OuterStructUnnamed::inner_union_unnamed;
%rename(OutSt) OuterStruct;
%rename(OutNestedSt) OuterStruct::outer_nested_struct;
%rename(InNestedSt) OuterStruct::outer_nested_struct::inner_nested_struct;
%rename(InNestedUn) OuterStruct::outer_nested_struct::innerNestedUnion;
#endif #endif
%inline %{ %inline %{
@ -38,6 +29,13 @@ struct OuterStructNamed {
} inner_union_named; } inner_union_named;
}; };
%}
#if not defined(SWIGSCILAB)
%inline %{
struct OuterStructUnnamed { struct OuterStructUnnamed {
struct { struct {
double xx; double xx;
@ -48,7 +46,6 @@ struct OuterStructUnnamed {
} inner_union_unnamed; } inner_union_unnamed;
}; };
typedef struct OuterStruct { typedef struct OuterStruct {
union { union {
@ -68,3 +65,41 @@ typedef struct OuterStruct {
} OuterStruct; } 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

View file

@ -4,10 +4,6 @@ This testcase checks that unions can be set and read.
%module unions %module unions
#if defined(SWIGSCILAB)
%rename(EmbedUnion) EmbeddedUnionTest;
#endif
%{ %{
/* Must undefine small to work on Windows. small is defined as a /* Must undefine small to work on Windows. small is defined as a
char in rpcndr.h */ char in rpcndr.h */
@ -33,7 +29,14 @@ typedef union {
SmallStruct ss; SmallStruct ss;
} UnionTest; } UnionTest;
%}
/* This union checks the parser and will be used in a runtime test */ /* This union checks the parser and will be used in a runtime test */
#if not defined(SWIGSCILAB)
%inline %{
typedef struct { typedef struct {
union union
{ {
@ -44,3 +47,20 @@ typedef struct {
} EmbeddedUnionTest; } EmbeddedUnionTest;
%} %}
#else
%inline %{
typedef struct {
union
{
BigStruct big;
SmallStruct small;
} uni;
int number;
} EmbedUnionTst;
%}
#endif