Browse Source

Fixed a bug when a default arg of type double has a value ending with .0.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/473/head
Dimitar Dobrev 10 years ago
parent
commit
e33ae461b0
  1. 14
      src/Generator/Passes/HandleDefaultParamValuesPass.cs
  2. 4
      tests/CSharpTemp/CSharpTemp.cpp
  3. 1
      tests/CSharpTemp/CSharpTemp.h

14
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -67,9 +67,19 @@ namespace CppSharp.Passes
private void CheckFloatSyntax(Type desugared, Parameter parameter) private void CheckFloatSyntax(Type desugared, Parameter parameter)
{ {
var builtin = desugared as BuiltinType; var builtin = desugared as BuiltinType;
if (builtin != null && builtin.Type == AST.PrimitiveType.Float && parameter.DefaultArgument.String.EndsWith(".F")) if (builtin != null)
{ {
parameter.DefaultArgument.String = parameter.DefaultArgument.String.Replace(".F", ".0F"); switch (builtin.Type)
{
case PrimitiveType.Float:
if (parameter.DefaultArgument.String.EndsWith(".F"))
parameter.DefaultArgument.String = parameter.DefaultArgument.String.Replace(".F", ".0F");
break;
case PrimitiveType.Double:
if (parameter.DefaultArgument.String.EndsWith("."))
parameter.DefaultArgument.String += '0';
break;
}
} }
} }

4
tests/CSharpTemp/CSharpTemp.cpp

@ -366,6 +366,10 @@ void MethodsWithDefaultValues::defaultPointerToValueType(QGenericArgument* point
{ {
} }
void MethodsWithDefaultValues::defaultDoubleWithoutF(double d1, double d2)
{
}
int MethodsWithDefaultValues::getA() int MethodsWithDefaultValues::getA()
{ {
return m_foo.A; return m_foo.A;

1
tests/CSharpTemp/CSharpTemp.h

@ -279,6 +279,7 @@ public:
void defaultRefTypeEnumImplicitCtor(const QColor &fillColor = Qt::white); void defaultRefTypeEnumImplicitCtor(const QColor &fillColor = Qt::white);
void rotate4x4Matrix(float angle, float x, float y, float z = 0.0f); void rotate4x4Matrix(float angle, float x, float y, float z = 0.0f);
void defaultPointerToValueType(QGenericArgument* pointer = 0); void defaultPointerToValueType(QGenericArgument* pointer = 0);
void defaultDoubleWithoutF(double d1 = 1.0, double d2 = 1.);
int getA(); int getA();
private: private:
Foo m_foo; Foo m_foo;

Loading…
Cancel
Save