diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index ac2dfd4dd..742db540b 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -516,6 +516,7 @@ CPP11_TEST_CASES = \ cpp11_decltype \ cpp11_default_delete \ cpp11_delegating_constructors \ + cpp11_director_enums \ cpp11_explicit_conversion_operators \ cpp11_final_override \ cpp11_function_objects \ diff --git a/Examples/test-suite/cpp11_director_enums.i b/Examples/test-suite/cpp11_director_enums.i new file mode 100644 index 000000000..420b3c8c9 --- /dev/null +++ b/Examples/test-suite/cpp11_director_enums.i @@ -0,0 +1,14 @@ +%module(directors="1") cpp11_director_enums + +%warnfilter(SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR) Cpp11DirectorEnumsCallback::g; + +%director Cpp11DirectorEnumsCallback; + +%inline %{ +enum class Color { Red, Green, Blue=10 }; +struct Cpp11DirectorEnumsCallback { + virtual Color f(Color c) = 0; + virtual const Color & g(const Color &c) = 0; + virtual ~Cpp11DirectorEnumsCallback() {} +}; +%} diff --git a/Lib/csharp/enums.swg b/Lib/csharp/enums.swg index 9b4acefc0..5cc265476 100644 --- a/Lib/csharp/enums.swg +++ b/Lib/csharp/enums.swg @@ -18,7 +18,7 @@ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & %{ static $*1_ltype temp = ($*1_ltype)$input; $result = &temp; %} -%typemap(directorin) const enum SWIGTYPE & "$input = $1;" +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" %typemap(csdirectorin) const enum SWIGTYPE & "($*csclassname)$iminput" %typemap(csdirectorout) const enum SWIGTYPE & "(int)$cscall" @@ -51,7 +51,7 @@ %typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} %typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} -%typemap(directorin) enum SWIGTYPE "$input = $1;" +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" %typemap(csdirectorin) enum SWIGTYPE "($csclassname)$iminput" %typemap(csdirectorout) enum SWIGTYPE "(int)$cscall" diff --git a/Lib/csharp/enumsimple.swg b/Lib/csharp/enumsimple.swg index 484443652..24e4bcf18 100644 --- a/Lib/csharp/enumsimple.swg +++ b/Lib/csharp/enumsimple.swg @@ -20,7 +20,7 @@ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & %{ static $*1_ltype temp = ($*1_ltype)$input; $result = &temp; %} -%typemap(directorin) const enum SWIGTYPE & "$input = $1;" +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" %typemap(csdirectorin) const enum SWIGTYPE & "$iminput" %typemap(csdirectorout) const enum SWIGTYPE & "$cscall" @@ -53,7 +53,7 @@ %typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} %typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} -%typemap(directorin) enum SWIGTYPE "$input = $1;" +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" %typemap(csdirectorin) enum SWIGTYPE "$iminput" %typemap(csdirectorout) enum SWIGTYPE "$cscall" diff --git a/Lib/csharp/enumtypesafe.swg b/Lib/csharp/enumtypesafe.swg index b7079343c..fd6801730 100644 --- a/Lib/csharp/enumtypesafe.swg +++ b/Lib/csharp/enumtypesafe.swg @@ -19,7 +19,7 @@ %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE & %{ static $*1_ltype temp = ($*1_ltype)$input; $result = &temp; %} -%typemap(directorin) const enum SWIGTYPE & "$input = $1;" +%typemap(directorin) const enum SWIGTYPE & "$input = (int)$1;" %typemap(csdirectorin) const enum SWIGTYPE & "$*csclassname.swigToEnum($iminput)" %typemap(csdirectorout) const enum SWIGTYPE & "$cscall.swigValue" @@ -52,7 +52,7 @@ %typemap(out) enum SWIGTYPE %{ $result = (int)$1; %} %typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %} -%typemap(directorin) enum SWIGTYPE "$input = $1;" +%typemap(directorin) enum SWIGTYPE "$input = (int)$1;" %typemap(csdirectorin) enum SWIGTYPE "$csclassname.swigToEnum($iminput)" %typemap(csdirectorout) enum SWIGTYPE "$cscall.swigValue" diff --git a/Lib/go/go.swg b/Lib/go/go.swg index c680844c4..e0ad5d147 100644 --- a/Lib/go/go.swg +++ b/Lib/go/go.swg @@ -379,7 +379,7 @@ %{ $result = (intgo)$1; %} %typemap(directorin) enum SWIGTYPE -%{ $input = ($1_ltype)$1; %} +%{ $input = (intgo)$1; %} %typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}