Fix parsing of struct declaration and initialization

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11750 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2009-11-17 18:45:53 +00:00
commit 7fd36f5bd6
6 changed files with 70 additions and 5 deletions

View file

@ -303,6 +303,7 @@ CPP_TEST_CASES += \
static_array_member \
static_const_member \
static_const_member_2 \
struct_initialization_cpp \
struct_value \
template \
template_arg_replace \
@ -470,6 +471,7 @@ C_TEST_CASES += \
sizeof_pointer \
sneaky1 \
struct_rename \
struct_initialization \
typedef_struct \
typemap_subst \
union_parameter \

View file

@ -0,0 +1,20 @@
from struct_initialization import *
if cvar.instanceC1.x != 10:
raise RuntimeError
if cvar.instanceD1.x != 10:
raise RuntimeError
if cvar.instanceD2.x != 20:
raise RuntimeError
if cvar.instanceD3.x != 30:
raise RuntimeError
if cvar.instanceE1.x != 1:
raise RuntimeError
if cvar.instanceF1.x != 1:
raise RuntimeError

View file

@ -0,0 +1,31 @@
// Test declaration and initialization of structs (C code)
%module struct_initialization
%inline %{
// Named types
struct StructA {
int x;
} instanceA1;
struct StructB {
int x;
} instanceB1, instanceB2, instanceB3;
struct StructC {
int x;
} instanceC1 = { 10 };
struct StructD {
int x;
} instanceD1 = { 10 }, instanceD2 = { 20 }, instanceD3 = { 30 };
struct StructE {
int x;
} instanceE1[3] = { { 1 }, { 2 }, { 3} };
struct StructF {
int x;
} instanceF1[3] = { { 1 }, { 2 } }, instanceF2[2] = { { -1 }, { -2 } }, instanceF3[2] = { { 11 }, { 22 } };
%}

View file

@ -0,0 +1,5 @@
// Test declaration and initialization of structs (C++ code)
%module struct_initialization_cpp
%include "struct_initialization.i" // C code