Don't generate C++ setters and getters inline
The type of the member may be incomplete, so generate the definitions of these functions in a separate section, after declaring all the wrapper classes, just as it was already done for the other functions. This fixes compiling some of the previously failing tests in C++ mode.
This commit is contained in:
parent
cc76e3a1d7
commit
edff57c2ad
1 changed files with 26 additions and 6 deletions
|
|
@ -1082,28 +1082,48 @@ public:
|
||||||
|
|
||||||
if (Checkattr(n, "kind", "variable")) {
|
if (Checkattr(n, "kind", "variable")) {
|
||||||
if (Checkattr(n, "memberget", "1")) {
|
if (Checkattr(n, "memberget", "1")) {
|
||||||
rtype_desc.set_return_value(NewStringf("%s(swig_self())", Getattr(n, "sym:name")));
|
|
||||||
Printv(cxx_wrappers_.sect_decls,
|
Printv(cxx_wrappers_.sect_decls,
|
||||||
cindent, rtype_desc.type(), " ", name, "() const "
|
cindent, rtype_desc.type(), " ", name, "() const;\n",
|
||||||
|
NIL
|
||||||
|
);
|
||||||
|
|
||||||
|
rtype_desc.set_return_value(NewStringf("%s(swig_self())", Getattr(n, "sym:name")));
|
||||||
|
Printv(cxx_wrappers_.sect_impls,
|
||||||
|
"inline ", rtype_desc.type(), " ", classname, "::", name, "() const "
|
||||||
"{", rtype_desc.get_return_code().get(), "}\n",
|
"{", rtype_desc.get_return_code().get(), "}\n",
|
||||||
NIL
|
NIL
|
||||||
);
|
);
|
||||||
} else if (Checkattr(n, "memberset", "1")) {
|
} else if (Checkattr(n, "memberset", "1")) {
|
||||||
Printv(cxx_wrappers_.sect_decls,
|
Printv(cxx_wrappers_.sect_decls,
|
||||||
cindent, "void ", name, "(", parms_cxx, ") "
|
cindent, "void ", name, "(", parms_cxx, ");\n",
|
||||||
|
NIL
|
||||||
|
);
|
||||||
|
|
||||||
|
Printv(cxx_wrappers_.sect_impls,
|
||||||
|
"inline void ", classname, "::", name, "(", parms_cxx, ") "
|
||||||
"{ ", Getattr(n, "sym:name"), "(swig_self(), ", parms_call, "); }\n",
|
"{ ", Getattr(n, "sym:name"), "(swig_self(), ", parms_call, "); }\n",
|
||||||
NIL
|
NIL
|
||||||
);
|
);
|
||||||
} else if (Checkattr(n, "varget", "1")) {
|
} else if (Checkattr(n, "varget", "1")) {
|
||||||
rtype_desc.set_return_value(NewStringf("%s()", Getattr(n, "sym:name")));
|
|
||||||
Printv(cxx_wrappers_.sect_decls,
|
Printv(cxx_wrappers_.sect_decls,
|
||||||
cindent, "static ", rtype_desc.type(), " ", name, "() "
|
cindent, "static ", rtype_desc.type(), " ", name, "();\n",
|
||||||
|
NIL
|
||||||
|
);
|
||||||
|
|
||||||
|
rtype_desc.set_return_value(NewStringf("%s()", Getattr(n, "sym:name")));
|
||||||
|
Printv(cxx_wrappers_.sect_impls,
|
||||||
|
"inline ", rtype_desc.type(), " ", classname, "::", name, "() "
|
||||||
"{", rtype_desc.get_return_code().get(), "}\n",
|
"{", rtype_desc.get_return_code().get(), "}\n",
|
||||||
NIL
|
NIL
|
||||||
);
|
);
|
||||||
} else if (Checkattr(n, "varset", "1")) {
|
} else if (Checkattr(n, "varset", "1")) {
|
||||||
Printv(cxx_wrappers_.sect_decls,
|
Printv(cxx_wrappers_.sect_decls,
|
||||||
cindent, "static void ", name, "(", parms_cxx, ") "
|
cindent, "static void ", name, "(", parms_cxx, ");\n",
|
||||||
|
NIL
|
||||||
|
);
|
||||||
|
|
||||||
|
Printv(cxx_wrappers_.sect_impls,
|
||||||
|
"inline void ", classname, "::", name, "(", parms_cxx, ") "
|
||||||
"{ ", Getattr(n, "sym:name"), "(", parms_call, "); }\n",
|
"{ ", Getattr(n, "sym:name"), "(", parms_call, "); }\n",
|
||||||
NIL
|
NIL
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue