Browse Source

Update QuickJS JS_GetOpaque and JS_GetAnyOpaque references to work with latest upstream.

pull/1865/head
Joao Matos 11 months ago
parent
commit
e649400ec0
  1. 20
      src/Generator/Generators/QuickJS/QuickJSSources.cs

20
src/Generator/Generators/QuickJS/QuickJSSources.cs

@ -301,8 +301,9 @@ namespace CppSharp.Generators.Cpp
} }
else else
{ {
var classId = $"classId_{GetCIdentifier(Context, @class)}";
Write($"{@class.QualifiedOriginalName}* instance = "); Write($"{@class.QualifiedOriginalName}* instance = ");
WriteLine($"({@class.QualifiedOriginalName}*) JS_GetOpaque(val, 0);"); WriteLine($"({@class.QualifiedOriginalName}*) JS_GetOpaque(val, {classId});");
} }
UnindentAndWriteCloseBrace(); UnindentAndWriteCloseBrace();
@ -450,14 +451,17 @@ namespace CppSharp.Generators.Cpp
var args = marshalers.Select(m => m.Context.Return.ToString()); var args = marshalers.Select(m => m.Context.Return.ToString());
WriteLine($"JSValueConst argv[] = {{ { string.Join(", ", args)} }};"); WriteLine($"JSValueConst argv[] = {{ { string.Join(", ", args)} }};");
WriteLine($"auto data = (JS_SignalContext*) JS_GetOpaque(event, 0);"); WriteLine($"auto data = (JS_SignalContext*) JS_GetOpaque(event, {QuickJSSources.SignalClassId});");
WriteLine($"JSValue ret = JS_Call(ctx, data->function, JS_UNDEFINED, {@event.Parameters.Count}, argv);"); WriteLine($"JSValue ret = JS_Call(ctx, data->function, JS_UNDEFINED, {@event.Parameters.Count}, argv);");
WriteLine($"JS_FreeValue(ctx, ret);"); WriteLine($"JS_FreeValue(ctx, ret);");
var defaultValuePrinter = new CppDefaultValuePrinter(Context);
var defaultValue = functionType.ReturnType.Visit(defaultValuePrinter);
WriteLineIndent($"return {defaultValue};");
//WriteLine($"{@class.QualifiedOriginalName}* instance = data->instance;"); //WriteLine($"{@class.QualifiedOriginalName}* instance = data->instance;");
/* /*
if (!isVoidReturn) if (!isVoidReturn)
{ {
CTypePrinter.PushContext(TypePrinterContextKind.Native); CTypePrinter.PushContext(TypePrinterContextKind.Native);
@ -786,13 +790,15 @@ namespace CppSharp.Generators.Cpp
else if (QuickJSRegister.ClassNeedsExtraData(@class)) else if (QuickJSRegister.ClassNeedsExtraData(@class))
{ {
var classDataId = $"data_{GetCIdentifier(Context, @class)}"; var classDataId = $"data_{GetCIdentifier(Context, @class)}";
WriteLine($"auto data = ({classDataId}*) JS_GetOpaque(this_val, 0);"); WriteLine("JSClassID _dummy;");
WriteLine($"auto data = ({classDataId}*) JS_GetAnyOpaque(this_val, &_dummy);");
WriteLine($"{@class.QualifiedOriginalName}* instance = ({@class.QualifiedOriginalName}*) data->instance;"); WriteLine($"{@class.QualifiedOriginalName}* instance = ({@class.QualifiedOriginalName}*) data->instance;");
} }
else else
{ {
WriteLine("JSClassID _dummy;");
Write($"{@class.QualifiedOriginalName}* instance = "); Write($"{@class.QualifiedOriginalName}* instance = ");
WriteLine($"({@class.QualifiedOriginalName}*) JS_GetOpaque(this_val, 0);"); WriteLine($"({@class.QualifiedOriginalName}*) JS_GetAnyOpaque(this_val, &_dummy);");
} }
NewLine(); NewLine();
@ -931,9 +937,9 @@ namespace CppSharp.Generators.Cpp
WriteOpenBraceAndIndent(); WriteOpenBraceAndIndent();
var @class = @event.Namespace as Class; var @class = @event.Namespace as Class;
var classId = $"classId_{GetCIdentifier(Context, @class)}";
var classDataId = $"data_{GetCIdentifier(Context, @class)}"; var classDataId = $"data_{GetCIdentifier(Context, @class)}";
WriteLine($"auto data = ({classDataId}*) JS_GetOpaque(this_val, 0);"); WriteLine("JSClassID _dummy;");
WriteLine($"auto data = ({classDataId}*) JS_GetAnyOpaque(this_val, &_dummy);");
WriteLine($"if (data == nullptr)"); WriteLine($"if (data == nullptr)");
WriteLineIndent("return JS_ThrowTypeError(ctx, \"Could not find object instance\");"); WriteLineIndent("return JS_ThrowTypeError(ctx, \"Could not find object instance\");");

Loading…
Cancel
Save