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
continue; continue;
if (@operator.OperatorKind == CXXOperatorKind.Subscript) if (@operator.OperatorKind == CXXOperatorKind.Subscript)
{
CreateIndexer(@class, @operator); CreateIndexer(@class, @operator);
}
else 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 QualifiedPointee = new QualifiedType(new TagType(@class)),
if (@operator.IsStatic) Modifier = PointerType.TypeModifier.LVReference
@operator.Parameters = @operator.Parameters.Skip(1).ToList(); };
if (@operator.ConversionType.Type == null || @operator.Parameters.Count == 0) @operator.Parameters.Insert(0, new Parameter
{ {
var type = new PointerType Name = Generator.GeneratedIdentifier("op"),
{ QualifiedType = new QualifiedType(type),
QualifiedPointee = new QualifiedType(new TagType(@class)), Kind = ParameterKind.OperatorParameter
Modifier = PointerType.TypeModifier.LVReference });
};
@operator.Parameters.Insert(0, new Parameter
{
Name = Generator.GeneratedIdentifier("op"),
QualifiedType = new QualifiedType(type),
Kind = ParameterKind.OperatorParameter
});
}
}
} }
} }

Loading…
Cancel
Save