|
|
|
@ -136,9 +136,15 @@ namespace CppSharp.Generators.Cpp
@@ -136,9 +136,15 @@ namespace CppSharp.Generators.Cpp
|
|
|
|
|
return VisitPrimitiveType(builtin.Type); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool VisitEnumItemDecl(Enumeration.Item item) |
|
|
|
|
{ |
|
|
|
|
var @enum = item.Namespace as Enumeration; |
|
|
|
|
return VisitPrimitiveType(@enum.BuiltinType.Type); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool VisitPrimitiveType(PrimitiveType primitive) |
|
|
|
|
{ |
|
|
|
|
var retName = Generator.GeneratedIdentifier(Context.ArgName); |
|
|
|
|
var retName = Generator.GeneratedIdentifier(Context.ReturnVarName); |
|
|
|
|
Context.Before.Write($"JSValue {retName} = "); |
|
|
|
|
|
|
|
|
|
switch (primitive) |
|
|
|
@ -341,10 +347,9 @@ namespace CppSharp.Generators.Cpp
@@ -341,10 +347,9 @@ namespace CppSharp.Generators.Cpp
|
|
|
|
|
|
|
|
|
|
public override bool VisitEnumDecl(Enumeration @enum) |
|
|
|
|
{ |
|
|
|
|
var typePrinter = new CppTypePrinter(Context.Context); |
|
|
|
|
typePrinter.PushContext(TypePrinterContextKind.Managed); |
|
|
|
|
var typeName = typePrinter.VisitDeclaration(@enum); |
|
|
|
|
Context.Return.Write($"({typeName}){Context.ReturnVarName}"); |
|
|
|
|
var retName = Generator.GeneratedIdentifier(Context.ReturnVarName); |
|
|
|
|
Context.Before.WriteLine($"JSValue {retName} = JS_NewInt32(ctx, (int32_t) {Context.ReturnVarName});"); |
|
|
|
|
Context.Return.Write(retName); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
@ -492,7 +497,8 @@ namespace CppSharp.Generators.Cpp
@@ -492,7 +497,8 @@ namespace CppSharp.Generators.Cpp
|
|
|
|
|
var typePrinter = new CppTypePrinter(Context.Context); |
|
|
|
|
var type = typePrinter.VisitPrimitiveType(primitive); |
|
|
|
|
|
|
|
|
|
Context.Before.WriteLine($"{type} {Context.ArgName};"); |
|
|
|
|
var argName = Context.Parameter.Name; |
|
|
|
|
Context.Before.WriteLine($"{type} {argName};"); |
|
|
|
|
|
|
|
|
|
switch (primitive) |
|
|
|
|
{ |
|
|
|
@ -500,64 +506,73 @@ namespace CppSharp.Generators.Cpp
@@ -500,64 +506,73 @@ namespace CppSharp.Generators.Cpp
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Bool: |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = JS_ToBool(ctx, argv[{Context.ParameterIndex}]);"); |
|
|
|
|
Context.Before.WriteLine($"if ({Context.ArgName} == -1)"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = JS_ToBool(ctx, argv[{Context.ParameterIndex}]);"); |
|
|
|
|
Context.Before.WriteLine($"if ({argName} == -1)"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Char: |
|
|
|
|
case PrimitiveType.SChar: |
|
|
|
|
case PrimitiveType.UChar: |
|
|
|
|
Context.Before.WriteLine($"int32_t _{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &_{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"int32_t _{argName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &_{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = ({type})_{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = ({type})_{argName};"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Short: |
|
|
|
|
case PrimitiveType.UShort: |
|
|
|
|
Context.Before.WriteLine($"int32_t _{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &_{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"int32_t _{argName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &_{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = ({type})_{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = ({type})_{argName};"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Int: |
|
|
|
|
case PrimitiveType.Long: |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt32(ctx, &{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.UInt: |
|
|
|
|
case PrimitiveType.ULong: |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToUint32(ctx, &{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToUint32(ctx, &{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.LongLong: |
|
|
|
|
Context.Before.WriteLine($"int64_t _{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt64Ext(ctx, &_{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"int64_t _{argName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt64Ext(ctx, &_{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = ({type})_{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = ({type})_{argName};"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.ULongLong: |
|
|
|
|
Context.Before.WriteLine($"int64_t _{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt64Ext(ctx, &_{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"int64_t _{argName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToInt64Ext(ctx, &_{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = ({type})_{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = ({type})_{argName};"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Float: |
|
|
|
|
Context.Before.WriteLine($"double _{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToFloat64(ctx, &_{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"double _{argName};"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToFloat64(ctx, &_{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Before.WriteLine($"{Context.ArgName} = ({type})_{Context.ArgName};"); |
|
|
|
|
Context.Before.WriteLine($"{argName} = ({type})_{argName};"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.Double: |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToFloat64(ctx, &{Context.ArgName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLine($"if (JS_ToFloat64(ctx, &{argName}, argv[{Context.ParameterIndex}]))"); |
|
|
|
|
Context.Before.WriteLineIndent("return JS_EXCEPTION;"); |
|
|
|
|
Context.Return.Write($"{argName}"); |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
case PrimitiveType.WideChar: |
|
|
|
@ -747,8 +762,11 @@ namespace CppSharp.Generators.Cpp
@@ -747,8 +762,11 @@ namespace CppSharp.Generators.Cpp
|
|
|
|
|
|
|
|
|
|
public override bool VisitEnumDecl(Enumeration @enum) |
|
|
|
|
{ |
|
|
|
|
Context.Return.Write("(::{0}){1}", @enum.QualifiedOriginalName, |
|
|
|
|
Context.Parameter.Name); |
|
|
|
|
VisitPrimitiveType(@enum.BuiltinType.Type); |
|
|
|
|
|
|
|
|
|
Context.Return.StringBuilder.Clear(); |
|
|
|
|
Context.Return.Write($"(::{@enum.QualifiedOriginalName}){Context.Parameter.Name}"); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|