a469aea9c0
...by making the general UNO -> C++ function call case work (modulo handling exceptions, which I'll look into later). Wasm call_indirect unfortunately needs to statically know the call target's signature, so we statically need to know all possible signatures. So introduce wasmcallgen helper to scan the existing UNOIDL API upfront and generate the relevant callvirtualfunction-wrapper.cxx and callvirtualfunction-inst.s code. (The good thing is that the number of different signatures is somewhat limited, each parameter can only be one of i32, i64, f32, or f64. So even if 3rd-party extensions bring along new UNOIDL interface methods, chances are relatively high that the signatures needed for them would already be covered by the existing ones.) Testing this can nicely be done in unotest/source/embindtest/embindtest.js via css.script.Invocation (which internally exercises the relevant code). (Instead of adding individual org.libreoffice.embindtest.StructLong/String etc., it would be nicer to introduce some polymorphic StructOne<T>, but the Emind UNO binding does not support polymorphic structs, so the embindtest.js code would not work.) Change-Id: If829c9e3772bfd27561f3ad743d38a71d11545b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167308 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins |
||
---|---|---|
.. | ||
com/sun/star | ||
org | ||
type_reference | ||
Makefile | ||
Module_offapi.mk | ||
README.md | ||
UnoApi_offapi.mk |
LibreOffice API IDL Files Except UDK API
Contains all of the IDL files except those in udkapi
.
i.e. the interfaces that are specific to the LibreOffice application. An artificial (?) separation.
The reference offapi/type_reference/offapi.idl
and
udkapi/type_reference/udkapi.idl
(formerly combined into a single
offapi/type_reference/types.rdb
) are used to detect inadvertent incompatible
changes. They are plain-text .idl
files (not strictly lexicographically sorted,
though, so they satisfy the .idl
file requirements for no forward dependencies),
so in cases where we deliberately /do/ become incompatible they can be modified
manually.
Old such cases of deliberately becoming incompatible are listed in
offapi/type_reference/typelibrary_history.txt
, newer such cases are recorded in
the git log
s of (now superseded) offapi/type_reference/types.rdb
,
offapi/type_reference/offapi.rdb
, and udkapi/type_reference/udkapi.rdb
, new such
cases are recorded in the git log
s of offapi/type_reference/offapi.idl
and
udkapi/type_reference/udkapi.idl
.