Add %feature("csdirectordelegatemodifiers") for C#
Enable customization of the delegate access modifiers generated in director classes. Fixes https://github.com/swig/swig/issues/748
This commit is contained in:
parent
10366d16e3
commit
01fa85bda7
3 changed files with 36 additions and 2 deletions
|
|
@ -5,6 +5,11 @@ See the RELEASENOTES file for a summary of changes in each release.
|
||||||
Version 3.0.11 (in progress)
|
Version 3.0.11 (in progress)
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
2016-12-24: wsfulton
|
||||||
|
[C#] Add %feature("csdirectordelegatemodifiers") to enable customization
|
||||||
|
of the delegate access modifiers generated in director classes.
|
||||||
|
Fixes issue https://github.com/swig/swig/issues/748
|
||||||
|
|
||||||
2016-12-23: wsfulton
|
2016-12-23: wsfulton
|
||||||
[Python] Fix builtin "python:slot" feature failing for tp_hash when using
|
[Python] Fix builtin "python:slot" feature failing for tp_hash when using
|
||||||
hashfunc closure with a "Wrong type for hash function" for Python 2.
|
hashfunc closure with a "Wrong type for hash function" for Python 2.
|
||||||
|
|
|
||||||
|
|
@ -1695,6 +1695,31 @@ void SwigDirector_Base::BaseBoolMethod(Base const &b, bool flag) {
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The delegates from the above example are <tt>public</tt> by default:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="code">
|
||||||
|
<pre>
|
||||||
|
public delegate uint SwigDelegateBase_0(uint x);
|
||||||
|
public delegate void SwigDelegateBase_1(global::System.IntPtr b, bool flag);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
These can be changed if desired via the <tt>csdirectordelegatemodifiers</tt>
|
||||||
|
<a href="Customization.html#Customization_features">%feature directive</a>.
|
||||||
|
For example, using <tt>%feature("csdirectordelegatemodifiers") "internal"</tt>
|
||||||
|
before SWIG parses the Base class will change all the delegates to <tt>internal</tt>:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="code">
|
||||||
|
<pre>
|
||||||
|
internal delegate uint SwigDelegateBase_0(uint x);
|
||||||
|
internal delegate void SwigDelegateBase_1(global::System.IntPtr b, bool flag);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
<H3><a name="CSharp_director_caveats">20.6.3 Director caveats</a></H3>
|
<H3><a name="CSharp_director_caveats">20.6.3 Director caveats</a></H3>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3917,8 +3917,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
Printf(callback_def, " private %s SwigDirector%s(", tm, overloaded_name);
|
Printf(callback_def, " private %s SwigDirector%s(", tm, overloaded_name);
|
||||||
if (!ignored_method)
|
if (!ignored_method) {
|
||||||
Printf(director_delegate_definitions, " public delegate %s", tm);
|
const String *csdirectordelegatemodifiers = Getattr(n, "feature:csdirectordelegatemodifiers");
|
||||||
|
String *modifiers = (csdirectordelegatemodifiers ? NewStringf("%s%s", csdirectordelegatemodifiers, Len(csdirectordelegatemodifiers) > 0 ? " " : "") : NewStringf("public "));
|
||||||
|
Printf(director_delegate_definitions, " %sdelegate %s", modifiers, tm);
|
||||||
|
Delete(modifiers);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Swig_warning(WARN_CSHARP_TYPEMAP_CSTYPE_UNDEF, input_file, line_number, "No imtype typemap defined for %s\n", SwigType_str(returntype, 0));
|
Swig_warning(WARN_CSHARP_TYPEMAP_CSTYPE_UNDEF, input_file, line_number, "No imtype typemap defined for %s\n", SwigType_str(returntype, 0));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue