Browse Source

Fixed the floating point bug.

pull/395/head
Pyry Kontio 12 years ago committed by Joao Matos
parent
commit
0598aa1329
  1. 11
      src/Generator/Passes/HandleDefaultParamValuesPass.cs

11
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -28,6 +28,8 @@ namespace CppSharp.Passes
if (CheckForDefaultPointer(desugared, parameter)) if (CheckForDefaultPointer(desugared, parameter))
continue; continue;
CheckFloatSyntax(desugared, parameter);
bool? defaultConstruct = CheckForDefaultConstruct(desugared, parameter.DefaultArgument); bool? defaultConstruct = CheckForDefaultConstruct(desugared, parameter.DefaultArgument);
if (defaultConstruct == null || if (defaultConstruct == null ||
(!Driver.Options.MarshalCharAsManagedChar && (!Driver.Options.MarshalCharAsManagedChar &&
@ -53,6 +55,15 @@ namespace CppSharp.Passes
return result; return result;
} }
private void CheckFloatSyntax(Type desugared, Parameter parameter)
{
var builtin = desugared as BuiltinType;
if (builtin != null && builtin.Type == AST.PrimitiveType.Float && parameter.DefaultArgument.String.EndsWith(".F"))
{
parameter.DefaultArgument.String = parameter.DefaultArgument.String.Replace(".F", ".0F");
}
}
private bool CheckForAnonExpression(Type desugared, Parameter parameter) private bool CheckForAnonExpression(Type desugared, Parameter parameter)
{ {
var cast = parameter.DefaultArgument as CastExpr; var cast = parameter.DefaultArgument as CastExpr;

Loading…
Cancel
Save