Using C++11 enum classes with just a forward reference.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@13013 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
6f9312d1c1
commit
38f6156a93
5 changed files with 35 additions and 16 deletions
|
|
@ -67,6 +67,12 @@ enum class Enum10 : TType<int>::type_name {
|
||||||
Val1, Val2, Val3 = 300, Val4
|
Val1, Val2, Val3 = 300, Val4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// forward declaration, no definition of enum
|
||||||
|
enum class Enum11 : int;
|
||||||
|
struct UseEnum11 {
|
||||||
|
Enum11 myenum11;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO
|
TODO
|
||||||
enum class MyClass {AAA, BBB, CCC};
|
enum class MyClass {AAA, BBB, CCC};
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@
|
||||||
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
||||||
%{ temp = ($*1_ltype)$input;
|
%{ temp = ($*1_ltype)$input;
|
||||||
$1 = &temp; %}
|
$1 = &temp; %}
|
||||||
%typemap(out) const enum SWIGTYPE & %{ $result = *$1; %}
|
%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %}
|
||||||
|
|
||||||
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
||||||
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
||||||
$result = &temp; %}
|
$result = &temp; %}
|
||||||
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
||||||
%typemap(csdirectorin) const enum SWIGTYPE & "($*csclassname)$iminput"
|
%typemap(csdirectorin) const enum SWIGTYPE & "($*csclassname)$iminput"
|
||||||
%typemap(csdirectorout) const enum SWIGTYPE & "(int)$cscall"
|
%typemap(csdirectorout) const enum SWIGTYPE & "(int)$cscall"
|
||||||
|
|
||||||
|
|
@ -48,10 +48,10 @@
|
||||||
%typemap(cstype) enum SWIGTYPE "$csclassname"
|
%typemap(cstype) enum SWIGTYPE "$csclassname"
|
||||||
|
|
||||||
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
||||||
%typemap(out) enum SWIGTYPE %{ $result = $1; %}
|
%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %}
|
||||||
|
|
||||||
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
||||||
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
||||||
%typemap(csdirectorin) enum SWIGTYPE "($csclassname)$iminput"
|
%typemap(csdirectorin) enum SWIGTYPE "($csclassname)$iminput"
|
||||||
%typemap(csdirectorout) enum SWIGTYPE "(int)$cscall"
|
%typemap(csdirectorout) enum SWIGTYPE "(int)$cscall"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,12 @@
|
||||||
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
||||||
%{ temp = ($*1_ltype)$input;
|
%{ temp = ($*1_ltype)$input;
|
||||||
$1 = &temp; %}
|
$1 = &temp; %}
|
||||||
%typemap(out) const enum SWIGTYPE & %{ $result = *$1; %}
|
%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %}
|
||||||
|
|
||||||
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
||||||
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
||||||
$result = &temp; %}
|
$result = &temp; %}
|
||||||
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
||||||
%typemap(csdirectorin) const enum SWIGTYPE & "$iminput"
|
%typemap(csdirectorin) const enum SWIGTYPE & "$iminput"
|
||||||
%typemap(csdirectorout) const enum SWIGTYPE & "$cscall"
|
%typemap(csdirectorout) const enum SWIGTYPE & "$cscall"
|
||||||
|
|
||||||
|
|
@ -50,10 +50,10 @@
|
||||||
%typemap(cstype) enum SWIGTYPE "int"
|
%typemap(cstype) enum SWIGTYPE "int"
|
||||||
|
|
||||||
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
||||||
%typemap(out) enum SWIGTYPE %{ $result = $1; %}
|
%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %}
|
||||||
|
|
||||||
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
||||||
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
||||||
%typemap(csdirectorin) enum SWIGTYPE "$iminput"
|
%typemap(csdirectorin) enum SWIGTYPE "$iminput"
|
||||||
%typemap(csdirectorout) enum SWIGTYPE "$cscall"
|
%typemap(csdirectorout) enum SWIGTYPE "$cscall"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,12 @@
|
||||||
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
%typemap(in) const enum SWIGTYPE & ($*1_ltype temp)
|
||||||
%{ temp = ($*1_ltype)$input;
|
%{ temp = ($*1_ltype)$input;
|
||||||
$1 = &temp; %}
|
$1 = &temp; %}
|
||||||
%typemap(out) const enum SWIGTYPE & %{ $result = *$1; %}
|
%typemap(out) const enum SWIGTYPE & %{ $result = (int)*$1; %}
|
||||||
|
|
||||||
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
%typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const enum SWIGTYPE &
|
||||||
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
%{ static $*1_ltype temp = ($*1_ltype)$input;
|
||||||
$result = &temp; %}
|
$result = &temp; %}
|
||||||
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
%typemap(directorin) const enum SWIGTYPE & "$input = $1_name;"
|
||||||
%typemap(csdirectorin) const enum SWIGTYPE & "$*csclassname.swigToEnum($iminput)"
|
%typemap(csdirectorin) const enum SWIGTYPE & "$*csclassname.swigToEnum($iminput)"
|
||||||
%typemap(csdirectorout) const enum SWIGTYPE & "$cscall.swigValue"
|
%typemap(csdirectorout) const enum SWIGTYPE & "$cscall.swigValue"
|
||||||
|
|
||||||
|
|
@ -49,10 +49,10 @@
|
||||||
%typemap(cstype) enum SWIGTYPE "$csclassname"
|
%typemap(cstype) enum SWIGTYPE "$csclassname"
|
||||||
|
|
||||||
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
%typemap(in) enum SWIGTYPE %{ $1 = ($1_ltype)$input; %}
|
||||||
%typemap(out) enum SWIGTYPE %{ $result = $1; %}
|
%typemap(out) enum SWIGTYPE %{ $result = (int)$1; %}
|
||||||
|
|
||||||
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
%typemap(directorout) enum SWIGTYPE %{ $result = ($1_ltype)$input; %}
|
||||||
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
%typemap(directorin) enum SWIGTYPE "$input = $1;"
|
||||||
%typemap(csdirectorin) enum SWIGTYPE "$csclassname.swigToEnum($iminput)"
|
%typemap(csdirectorin) enum SWIGTYPE "$csclassname.swigToEnum($iminput)"
|
||||||
%typemap(csdirectorout) enum SWIGTYPE "$cscall.swigValue"
|
%typemap(csdirectorout) enum SWIGTYPE "$cscall.swigValue"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -189,12 +189,16 @@
|
||||||
signed char,
|
signed char,
|
||||||
unsigned char,
|
unsigned char,
|
||||||
bool,
|
bool,
|
||||||
size_t,
|
size_t
|
||||||
enum SWIGTYPE
|
|
||||||
{
|
{
|
||||||
ZVAL_LONG(return_value,$1);
|
ZVAL_LONG(return_value,$1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%typemap(out) enum SWIGTYPE
|
||||||
|
{
|
||||||
|
ZVAL_LONG(return_value, (long)$1);
|
||||||
|
}
|
||||||
|
|
||||||
%typemap(out) long long
|
%typemap(out) long long
|
||||||
%{
|
%{
|
||||||
if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) {
|
if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) {
|
||||||
|
|
@ -227,12 +231,16 @@
|
||||||
const signed char &,
|
const signed char &,
|
||||||
const unsigned char &,
|
const unsigned char &,
|
||||||
const bool &,
|
const bool &,
|
||||||
const size_t &,
|
const size_t &
|
||||||
const enum SWIGTYPE &
|
|
||||||
{
|
{
|
||||||
ZVAL_LONG(return_value,*$1);
|
ZVAL_LONG(return_value,*$1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%typemap(out) const enum SWIGTYPE &
|
||||||
|
{
|
||||||
|
ZVAL_LONG(return_value, (long)*$1);
|
||||||
|
}
|
||||||
|
|
||||||
%typemap(out) const long long &
|
%typemap(out) const long long &
|
||||||
%{
|
%{
|
||||||
if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) {
|
if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) {
|
||||||
|
|
@ -270,6 +278,11 @@
|
||||||
ZVAL_LONG($input,$1_name);
|
ZVAL_LONG($input,$1_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%typemap(directorin) enum SWIGTYPE
|
||||||
|
{
|
||||||
|
ZVAL_LONG($input, (long)$1_name);
|
||||||
|
}
|
||||||
|
|
||||||
%typemap(out) bool
|
%typemap(out) bool
|
||||||
{
|
{
|
||||||
ZVAL_BOOL(return_value,($1)?1:0);
|
ZVAL_BOOL(return_value,($1)?1:0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue