[Python] Fix new GCC8 warnings in generated code
Avoid casts between incompatible function types where possible (when keyword args are in use, it is not possible to avoid such warnings as they are inherent in the design of Python's C API in that particular case). Fixes #1259.
This commit is contained in:
parent
a539d9e1e5
commit
7f98830110
4 changed files with 36 additions and 21 deletions
|
|
@ -1090,7 +1090,7 @@ public:
|
|||
* ------------------------------------------------------------ */
|
||||
int add_pyinstancemethod_new() {
|
||||
String *name = NewString("SWIG_PyInstanceMethod_New");
|
||||
Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, NULL},\n", name, name);
|
||||
Printf(methods, "\t { \"%s\", %s, METH_O, NULL},\n", name, name);
|
||||
Delete(name);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -2507,17 +2507,17 @@ public:
|
|||
if (!kw) {
|
||||
if (n && funpack) {
|
||||
if (num_required == 0 && num_arguments == 0) {
|
||||
Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_NOARGS, ", name, function);
|
||||
Printf(methods, "\t { \"%s\", %s, METH_NOARGS, ", name, function);
|
||||
} else if (num_required == 1 && num_arguments == 1) {
|
||||
Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, ", name, function);
|
||||
Printf(methods, "\t { \"%s\", %s, METH_O, ", name, function);
|
||||
} else {
|
||||
Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function);
|
||||
Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function);
|
||||
}
|
||||
} else {
|
||||
Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function);
|
||||
Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function);
|
||||
}
|
||||
} else {
|
||||
Printf(methods, "\t { (char *)\"%s\", (PyCFunction) %s, METH_VARARGS | METH_KEYWORDS, ", name, function);
|
||||
Printf(methods, "\t { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, ", name, function);
|
||||
}
|
||||
|
||||
if (!n) {
|
||||
|
|
@ -3898,7 +3898,7 @@ public:
|
|||
if (shadow) {
|
||||
if (builtin) {
|
||||
String *rname = SwigType_namestr(real_classname);
|
||||
Printf(builtin_methods, " { \"__disown__\", (PyCFunction) Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname);
|
||||
Printf(builtin_methods, " { \"__disown__\", Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname);
|
||||
Delete(rname);
|
||||
} else {
|
||||
String *symname = Getattr(n, "sym:name");
|
||||
|
|
@ -4738,13 +4738,13 @@ public:
|
|||
int argcount = Getattr(n, "python:argcount") ? atoi(Char(Getattr(n, "python:argcount"))) : 2;
|
||||
String *ds = have_docstring(n) ? cdocstring(n, AUTODOC_METHOD) : NewString("");
|
||||
if (check_kwargs(n)) {
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS|METH_KEYWORDS, (char *) \"%s\" },\n", symname, wname, ds);
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, \"%s\" },\n", symname, wname, ds);
|
||||
} else if (argcount == 0) {
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_NOARGS, (char *) \"%s\" },\n", symname, wname, ds);
|
||||
Printf(builtin_methods, " { \"%s\", %s, METH_NOARGS, \"%s\" },\n", symname, wname, ds);
|
||||
} else if (argcount == 1) {
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_O, (char *) \"%s\" },\n", symname, wname, ds);
|
||||
Printf(builtin_methods, " { \"%s\", %s, METH_O, \"%s\" },\n", symname, wname, ds);
|
||||
} else {
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS, (char *) \"%s\" },\n", symname, wname, ds);
|
||||
Printf(builtin_methods, " { \"%s\", %s, METH_VARARGS, \"%s\" },\n", symname, wname, ds);
|
||||
}
|
||||
Delete(fullname);
|
||||
Delete(wname);
|
||||
|
|
@ -4845,10 +4845,10 @@ public:
|
|||
Append(pyflags, "METH_VARARGS");
|
||||
if (have_docstring(n)) {
|
||||
String *ds = cdocstring(n, AUTODOC_STATICFUNC);
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, (char *) \"%s\" },\n", symname, wname, pyflags, ds);
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"%s\" },\n", symname, wname, pyflags, ds);
|
||||
Delete(ds);
|
||||
} else {
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, \"\" },\n", symname, wname, pyflags);
|
||||
Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"\" },\n", symname, wname, pyflags);
|
||||
}
|
||||
Delete(fullname);
|
||||
Delete(wname);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue