{
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;
+ }
+ }
+ }
}
}
// Generics are handled in a second pass.
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)
{
foreach (var wrapper in GetWrapper(wrappers, WrapperTypes.ArrayParameter, func))
/// Add an int32 overload for convenience.
/// </summary>
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