|
|
@ -130,7 +130,7 @@ namespace CppSharp.Passes |
|
|
|
Function function, Function overload) |
|
|
|
Function function, Function overload) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var functionParams = function.Parameters.Where( |
|
|
|
var functionParams = function.Parameters.Where( |
|
|
|
p => p.Kind == ParameterKind.Regular && p.Type.IsAddress()).ToList(); |
|
|
|
p => p.Kind == ParameterKind.Regular).ToList(); |
|
|
|
// It's difficult to handle this case for more than one parameter
|
|
|
|
// It's difficult to handle this case for more than one parameter
|
|
|
|
// For example, if we have:
|
|
|
|
// For example, if we have:
|
|
|
|
// void f(float&, const int&);
|
|
|
|
// void f(float&, const int&);
|
|
|
@ -141,14 +141,20 @@ namespace CppSharp.Passes |
|
|
|
if (functionParams.Count != 1) |
|
|
|
if (functionParams.Count != 1) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
var overloadParams = overload.Parameters.Where( |
|
|
|
var overloadParams = overload.Parameters.Where( |
|
|
|
p => p.Kind == ParameterKind.Regular && p.Type.IsAddress()).ToList(); |
|
|
|
p => p.Kind == ParameterKind.Regular).ToList(); |
|
|
|
if (overloadParams.Count != 1) |
|
|
|
if (overloadParams.Count != 1) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
var parameterFunction = functionParams[0]; |
|
|
|
var parameterFunction = functionParams[0]; |
|
|
|
var parameterOverload = overloadParams[0]; |
|
|
|
var parameterOverload = overloadParams[0]; |
|
|
|
|
|
|
|
|
|
|
|
if (!parameterFunction.Type.GetPointee().Equals(parameterOverload.Type.GetPointee())) |
|
|
|
var pointerParamFunction = parameterFunction.Type.Desugar() as PointerType; |
|
|
|
|
|
|
|
var pointerParamOverload = parameterOverload.Type.Desugar() as PointerType; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pointerParamFunction == null || pointerParamOverload == null) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!pointerParamFunction.GetPointee().Equals(pointerParamOverload.GetPointee())) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
if (parameterFunction.IsConst && !parameterOverload.IsConst) |
|
|
|
if (parameterFunction.IsConst && !parameterOverload.IsConst) |
|
|
@ -163,9 +169,6 @@ namespace CppSharp.Passes |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var pointerParamFunction = (PointerType) parameterFunction.Type; |
|
|
|
|
|
|
|
var pointerParamOverload = (PointerType) parameterOverload.Type; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pointerParamFunction.Modifier == PointerType.TypeModifier.RVReference && |
|
|
|
if (pointerParamFunction.Modifier == PointerType.TypeModifier.RVReference && |
|
|
|
pointerParamOverload.Modifier != PointerType.TypeModifier.RVReference) |
|
|
|
pointerParamOverload.Modifier != PointerType.TypeModifier.RVReference) |
|
|
|
{ |
|
|
|
{ |
|
|
|