Add feature to Bind to generate legacy array overloads
This commit is contained in:
parent
6bd1f0e603
commit
ffa26fb204
2 changed files with 31 additions and 0 deletions
|
@ -648,6 +648,22 @@ namespace Bind
|
||||||
{
|
{
|
||||||
d.Parameters[i].WrapperType |= WrapperTypes.UncheckedParameter;
|
d.Parameters[i].WrapperType |= WrapperTypes.UncheckedParameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (function_override != null)
|
||||||
|
{
|
||||||
|
XPathNavigator param_override = function_override.SelectSingleNode(String.Format(
|
||||||
|
"param[@name='{0}' or @index='{1}']",
|
||||||
|
d.Parameters[i].RawName,
|
||||||
|
i));
|
||||||
|
if (param_override != null)
|
||||||
|
{
|
||||||
|
var legacyArrayParameter = param_override.GetAttribute("legacyArrayParameter", String.Empty);
|
||||||
|
if (!String.IsNullOrEmpty(legacyArrayParameter))
|
||||||
|
{
|
||||||
|
d.Parameters[i].WrapperType |= WrapperTypes.LegacyArrayParameter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,6 +1113,17 @@ namespace Bind
|
||||||
// Generics are handled in a second pass.
|
// Generics are handled in a second pass.
|
||||||
if ((parameter.WrapperType & WrapperTypes.GenericParameter) == 0)
|
if ((parameter.WrapperType & WrapperTypes.GenericParameter) == 0)
|
||||||
{
|
{
|
||||||
|
if ((parameter.WrapperType & WrapperTypes.LegacyArrayParameter) != 0)
|
||||||
|
{
|
||||||
|
foreach (var wrapper in GetWrapper(wrappers, WrapperTypes.LegacyArrayParameter, func))
|
||||||
|
{
|
||||||
|
wrapper.Obsolete = "Use out overload instead";
|
||||||
|
var p = wrapper.Parameters[i];
|
||||||
|
p.Array++;
|
||||||
|
p.Pointer--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((parameter.WrapperType & WrapperTypes.ArrayParameter) != 0)
|
if ((parameter.WrapperType & WrapperTypes.ArrayParameter) != 0)
|
||||||
{
|
{
|
||||||
foreach (var wrapper in GetWrapper(wrappers, WrapperTypes.ArrayParameter, func))
|
foreach (var wrapper in GetWrapper(wrappers, WrapperTypes.ArrayParameter, func))
|
||||||
|
|
|
@ -94,6 +94,10 @@ namespace Bind
|
||||||
/// Add an int32 overload for convenience.
|
/// Add an int32 overload for convenience.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SizeParameter = 1 << 14,
|
SizeParameter = 1 << 14,
|
||||||
|
/// <summary>
|
||||||
|
/// Function takes a ref but we emit a legacy array overload to maintain backwards compatability.
|
||||||
|
/// </summary>
|
||||||
|
LegacyArrayParameter = 1 << 15,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static class Utilities
|
internal static class Utilities
|
||||||
|
|
Loading…
Reference in a new issue