Browse Source

Fixed CheckOperatorsOverloads pass to work correctly for non C#-supported operator overloads.

pull/1/head
triton 12 years ago
parent
commit
f26018db87
  1. 13
      src/Generator/Passes/CheckOperatorsOverloads.cs

13
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -55,10 +55,16 @@ namespace CppSharp.Passes @@ -55,10 +55,16 @@ namespace CppSharp.Passes
if (@operator.IsStatic)
@operator.Parameters = @operator.Parameters.Skip(1).ToList();
var type = new PointerType()
{
QualifiedPointee = new QualifiedType(new TagType(@class)),
Modifier = PointerType.TypeModifier.Pointer
};
@operator.Parameters.Insert(0, new Parameter
{
Name = Helpers.GeneratedIdentifier("op"),
QualifiedType = new QualifiedType(new TagType(@class)),
QualifiedType = new QualifiedType(type),
Kind = ParameterKind.OperatorParameter
});
}
@ -76,15 +82,16 @@ namespace CppSharp.Passes @@ -76,15 +82,16 @@ namespace CppSharp.Passes
var existingKind = missingKind == op2 ? op1 : op2;
// FIXME: We have to check for missing overloads per overload instance.
foreach (var overload in @class.FindOperator(existingKind))
foreach (var overload in @class.FindOperator(existingKind).ToList())
{
if (overload.Ignore) continue;
var @params = overload.Parameters;
bool isBuiltin;
var method = new Method()
{
Name = CSharpTextTemplate.GetOperatorIdentifier(missingKind),
Name = CSharpTextTemplate.GetOperatorIdentifier(missingKind, out isBuiltin),
Namespace = @class,
IsSynthetized = true,
Kind = CXXMethodKind.Operator,

Loading…
Cancel
Save