diff --git a/Lib/javascript/jsc/ccomplex.i b/Lib/javascript/jsc/ccomplex.i index 50f0f95fe..64fe00ec9 100644 --- a/Lib/javascript/jsc/ccomplex.i +++ b/Lib/javascript/jsc/ccomplex.i @@ -16,11 +16,11 @@ /* C complex constructor */ #define CCplxConst(r, i) ((r) + I*(i)) -%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); -%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxflt_convn(float _Complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double _Complex, CCplxConst, creal, cimag); %swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); /* declaring the typemaps */ -%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); -%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float _Complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double _Complex); %typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/Lib/javascript/v8/ccomplex.i b/Lib/javascript/v8/ccomplex.i index 8eda920bb..b1e766354 100644 --- a/Lib/javascript/v8/ccomplex.i +++ b/Lib/javascript/v8/ccomplex.i @@ -16,11 +16,11 @@ /* C complex constructor */ #define CCplxConst(r, i) ((r) + I*(i)) -%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); -%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxflt_convn(float _Complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double _Complex, CCplxConst, creal, cimag); %swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); /* declaring the typemaps */ -%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); -%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float _Complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double _Complex); %typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/Lib/python/ccomplex.i b/Lib/python/ccomplex.i index 28872b985..17163506b 100644 --- a/Lib/python/ccomplex.i +++ b/Lib/python/ccomplex.i @@ -16,11 +16,11 @@ /* C complex constructor */ #define CCplxConst(r, i) ((r) + I*(i)) -%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); -%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxflt_convn(float _Complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double _Complex, CCplxConst, creal, cimag); %swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); /* declaring the typemaps */ -%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); -%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float _Complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double _Complex); %typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/Source/CParse/cscanner.c b/Source/CParse/cscanner.c index 19a013803..6de66845c 100644 --- a/Source/CParse/cscanner.c +++ b/Source/CParse/cscanner.c @@ -912,6 +912,10 @@ int yylex(void) { yylval.type = NewSwigType(T_COMPLEX); return (TYPE_COMPLEX); } + if (strcmp(yytext, "_Complex") == 0) { + yylval.type = NewSwigType(T_COMPLEX); + return (TYPE_COMPLEX); + } if (strcmp(yytext, "restrict") == 0) return (yylex()); } diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 8029dee3d..682e317d4 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -6232,19 +6232,19 @@ primitive_type_list : type_specifier { } else if (Cmp($1.type,"double") == 0) { if (Cmp($2.type,"long") == 0) { $$.type = NewString("long double"); - } else if (Cmp($2.type,"complex") == 0) { - $$.type = NewString("double complex"); + } else if (Cmp($2.type,"complex") == 0 || Cmp($2.type,"_Complex") == 0) { + $$.type = NewString("double _Complex"); } else { err = 1; } } else if (Cmp($1.type,"float") == 0) { - if (Cmp($2.type,"complex") == 0) { - $$.type = NewString("float complex"); + if (Cmp($2.type,"complex") == 0 || Cmp($2.type,"_Complex") == 0) { + $$.type = NewString("float _Complex"); } else { err = 1; } - } else if (Cmp($1.type,"complex") == 0) { - $$.type = NewStringf("%s complex", $2.type); + } else if (Cmp($1.type,"complex") == 0 || Cmp($1.type,"_Complex") == 0) { + $$.type = NewStringf("%s _Complex", $2.type); } else { err = 1; } diff --git a/Source/Swig/typesys.c b/Source/Swig/typesys.c index 7564db1a6..e48b80ce2 100644 --- a/Source/Swig/typesys.c +++ b/Source/Swig/typesys.c @@ -1453,9 +1453,9 @@ int SwigType_type(const SwigType *t) { return T_DOUBLE; if (strcmp(c, "long double") == 0) return T_LONGDOUBLE; - if (!cparse_cplusplus && (strcmp(c, "float complex") == 0)) + if (!cparse_cplusplus && (strcmp(c, "float _Complex") == 0)) return T_FLTCPLX; - if (!cparse_cplusplus && (strcmp(c, "double complex") == 0)) + if (!cparse_cplusplus && (strcmp(c, "double _Complex") == 0)) return T_DBLCPLX; if (!cparse_cplusplus && (strcmp(c, "complex") == 0)) return T_COMPLEX;