Browse Source

Extract operator creation to its own method.

pull/742/head
Joao Matos 9 years ago
parent
commit
0798cc8a8b
  1. 42
      src/Generator/Passes/CheckOperatorsOverloads.cs

42
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -61,31 +61,31 @@ namespace CppSharp.Passes @@ -61,31 +61,31 @@ namespace CppSharp.Passes
continue;
if (@operator.OperatorKind == CXXOperatorKind.Subscript)
{
CreateIndexer(@class, @operator);
}
else
CreateOperator(@class, @operator);
}
}
private static void CreateOperator(Class @class, Method @operator)
{
if (@operator.IsStatic)
@operator.Parameters = @operator.Parameters.Skip(1).ToList();
if (@operator.ConversionType.Type == null || @operator.Parameters.Count == 0)
{
var type = new PointerType
{
// Handle missing operator parameters
if (@operator.IsStatic)
@operator.Parameters = @operator.Parameters.Skip(1).ToList();
QualifiedPointee = new QualifiedType(new TagType(@class)),
Modifier = PointerType.TypeModifier.LVReference
};
if (@operator.ConversionType.Type == null || @operator.Parameters.Count == 0)
{
var type = new PointerType
{
QualifiedPointee = new QualifiedType(new TagType(@class)),
Modifier = PointerType.TypeModifier.LVReference
};
@operator.Parameters.Insert(0, new Parameter
{
Name = Generator.GeneratedIdentifier("op"),
QualifiedType = new QualifiedType(type),
Kind = ParameterKind.OperatorParameter
});
}
}
@operator.Parameters.Insert(0, new Parameter
{
Name = Generator.GeneratedIdentifier("op"),
QualifiedType = new QualifiedType(type),
Kind = ParameterKind.OperatorParameter
});
}
}

Loading…
Cancel
Save