Merge branch 'vadz-py-restore-autodoc-defval'
* vadz-py-restore-autodoc-defval: Always include default parameter values in Python autodoc strings
This commit is contained in:
commit
8a1ad6adc6
3 changed files with 24 additions and 2 deletions
|
|
@ -169,3 +169,13 @@ int process2(int from = 0, int _in = 1, int var = 2) { return from; }
|
||||||
int process3(int from, int _in, int var) { return from; }
|
int process3(int from, int _in, int var) { return from; }
|
||||||
int process4(int from = 0, int _in = 1, int var = 2) { return from; }
|
int process4(int from = 0, int _in = 1, int var = 2) { return from; }
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
// Autodoc for methods with default arguments not directly representable in
|
||||||
|
// target language.
|
||||||
|
%feature(autodoc,0) process_complex_defval;
|
||||||
|
%feature("compactdefaultargs") process_complex_defval;
|
||||||
|
%inline %{
|
||||||
|
const int PROCESS_DEFAULT_VALUE = 17;
|
||||||
|
typedef long int some_type;
|
||||||
|
int process_complex_defval(int val = PROCESS_DEFAULT_VALUE, int factor = some_type(-1)) { return val*factor; }
|
||||||
|
%}
|
||||||
|
|
|
||||||
|
|
@ -207,3 +207,5 @@ check(inspect.getdoc(process), "process(int _from, int _in, int var) -> int")
|
||||||
check(inspect.getdoc(process2), "process2(int _from=0, int _in=1, int var=2) -> int")
|
check(inspect.getdoc(process2), "process2(int _from=0, int _in=1, int var=2) -> int")
|
||||||
check(inspect.getdoc(process3), "process3(int _from, int _in, int var) -> int")
|
check(inspect.getdoc(process3), "process3(int _from, int _in, int var) -> int")
|
||||||
check(inspect.getdoc(process4), "process4(int _from=0, int _in=1, int var=2) -> int")
|
check(inspect.getdoc(process4), "process4(int _from=0, int _in=1, int var=2) -> int")
|
||||||
|
|
||||||
|
check(inspect.getdoc(process_complex_defval), "process_complex_defval(val=PROCESS_DEFAULT_VALUE, factor=some_type(-1)) -> int")
|
||||||
|
|
|
||||||
|
|
@ -1715,9 +1715,19 @@ public:
|
||||||
// Write default value
|
// Write default value
|
||||||
if (value && !calling) {
|
if (value && !calling) {
|
||||||
String *new_value = convertValue(value, Getattr(p, "type"));
|
String *new_value = convertValue(value, Getattr(p, "type"));
|
||||||
|
if (new_value) {
|
||||||
|
value = new_value;
|
||||||
|
} else {
|
||||||
|
// Even if the value is not representable in the target language, still use it in the documentaiton, for compatibility with the previous SWIG versions
|
||||||
|
// and because it can still be useful to see the C++ expression there.
|
||||||
|
Node *lookup = Swig_symbol_clookup(value, 0);
|
||||||
|
if (lookup)
|
||||||
|
value = Getattr(lookup, "sym:name");
|
||||||
|
}
|
||||||
|
Printf(doc, "=%s", value);
|
||||||
|
|
||||||
if (new_value)
|
if (new_value)
|
||||||
Printf(doc, "=%s", new_value);
|
Delete(new_value);
|
||||||
Delete(new_value);
|
|
||||||
}
|
}
|
||||||
Delete(type_str);
|
Delete(type_str);
|
||||||
Delete(made_name);
|
Delete(made_name);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue