Merge m-c to autoland. a=merge

This commit is contained in:
Ryan VanderMeulen
2022-12-18 14:34:17 -05:00
52 changed files with 980 additions and 1427 deletions

40
Cargo.lock generated
View File

@@ -2355,14 +2355,14 @@ dependencies = [
name = "goblin"
version = "0.1.99"
dependencies = [
"goblin 0.6.0",
"goblin 0.5.4",
]
[[package]]
name = "goblin"
version = "0.6.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "572564d6cba7d09775202c8e7eebc4d534d5ae36578ab402fb21e182a0ac9505"
checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143"
dependencies = [
"log",
"plain",
@@ -5756,9 +5756,9 @@ checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
[[package]]
name = "uniffi"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"
checksum = "f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"
dependencies = [
"anyhow",
"bytes 1.2.1",
@@ -5866,7 +5866,9 @@ dependencies = [
[[package]]
name = "uniffi_bindgen"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12cc4af3c0180c7e86c4a3acf2b6587af04ba2567b1e948993df10f421796621"
dependencies = [
"anyhow",
"askama",
@@ -5874,7 +5876,7 @@ dependencies = [
"camino",
"clap",
"fs-err",
"goblin 0.6.0",
"goblin 0.5.4",
"heck",
"once_cell",
"paste",
@@ -5887,30 +5889,20 @@ dependencies = [
[[package]]
name = "uniffi_build"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"
checksum = "510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"
dependencies = [
"anyhow",
"camino",
"uniffi_bindgen",
]
[[package]]
name = "uniffi_checksum_derive"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "uniffi_macros"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"
checksum = "5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"
dependencies = [
"bincode",
"camino",
@@ -5927,13 +5919,11 @@ dependencies = [
[[package]]
name = "uniffi_meta"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
dependencies = [
"serde",
"siphasher",
"uniffi_checksum_derive",
]
[[package]]

View File

@@ -180,13 +180,10 @@ path = "third_party/rust/mio-0.6.23"
# okay, but it means that their dependencies on UniFFI crates will normally
# also be the git versions. Patch them to use the published versions to avoid
# duplicate crates.
[patch."https://github.com/mozilla/uniffi-rs.git"]
uniffi = "=0.21.1"
#uniffi_bindgen = "=0.21.1"
uniffi_build = "=0.21.1"
uniffi_macros = "=0.21.1"
weedle2 = "=4.0.0"
# Patched with https://github.com/mozilla/uniffi-rs/pull/1405
[patch.crates-io.uniffi_bindgen]
path = "third_party/rust/uniffi_bindgen"
[patch."https://github.com/mozilla/uniffi-rs.git"]
uniffi = "=0.21.0"
uniffi_bindgen = "=0.21.0"
uniffi_build = "=0.21.0"
uniffi_macros = "=0.21.0"
weedle2 = "=4.0.0"

View File

@@ -8,4 +8,4 @@ license = "MPL-2.0"
path = "lib.rs"
[dependencies.goblin]
version = "0.6"
version = "0.5.3"

View File

@@ -700,12 +700,6 @@ criteria = "safe-to-deploy"
delta = "0.1.3 -> 0.5.4"
notes = "Several bugfixes since 2019. This version is also in use by Mozilla's crash reporting tooling, e.g. minidump-writer"
[[audits.goblin]]
who = "Gabriele Svelto <gsvelto@mozilla.com>"
criteria = "safe-to-deploy"
delta = "0.5.4 -> 0.6.0"
notes = "Mostly bug fixes and some added functionality"
[[audits.gpu-descriptor]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
@@ -1537,12 +1531,6 @@ criteria = "safe-to-deploy"
delta = "0.20.0 -> 0.21.0"
notes = "Maintained by the Glean and Application Services team."
[[audits.uniffi]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.21.0 -> 0.21.1"
notes = "No changes."
[[audits.uniffi_bindgen]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
@@ -1566,12 +1554,6 @@ criteria = "safe-to-deploy"
delta = "0.20.0 -> 0.21.0"
notes = "Maintained by the Glean and Application Services team."
[[audits.uniffi_bindgen]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.21.0 -> 0.21.1"
notes = "I authored the changes in this version."
[[audits.uniffi_build]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
@@ -1595,18 +1577,6 @@ criteria = "safe-to-deploy"
delta = "0.20.0 -> 0.21.0"
notes = "Maintained by the Glean and Application Services team."
[[audits.uniffi_build]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.21.0 -> 0.21.1"
notes = "No changes."
[[audits.uniffi_checksum_derive]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
version = "0.21.1"
notes = "I authored this crate."
[[audits.uniffi_macros]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
@@ -1630,12 +1600,6 @@ criteria = "safe-to-deploy"
delta = "0.20.0 -> 0.21.0"
notes = "Maintained by the Glean and Application Services team."
[[audits.uniffi_macros]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.21.0 -> 0.21.1"
notes = "No changes."
[[audits.uniffi_meta]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
@@ -1653,12 +1617,6 @@ criteria = "safe-to-deploy"
delta = "0.20.0 -> 0.21.0"
notes = "Maintained by the Glean and Application Services team."
[[audits.uniffi_meta]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.21.0 -> 0.21.1"
notes = "I authored the changes in this version."
[[audits.void]]
who = "Bobby Holley <bobbyholley@gmail.com>"
criteria = "safe-to-deploy"

View File

@@ -158,10 +158,6 @@ notes = "This is a first-party crate which is entirely unrelated to the crates.i
audit-as-crates-io = false
notes = "This is a first-party crate, maintained by the appservices team, which is entirely unrelated to the crates.io package of the same name."
[policy.uniffi_bindgen]
audit-as-crates-io = false
notes = "This is a first-party crate, normally vendored, but currently patched in-tree until next update."
[policy.viaduct]
audit-as-crates-io = false
notes = "This is a first-party crate, maintained by the appservices team, which is entirely unrelated to the crates.io package of the same name."

View File

@@ -1 +1 @@
{"files":{"CHANGELOG.md":"45e187ea086d30738d40ecd0a893326d0acf416d754284786190b9b9eb60e2f6","Cargo.toml":"ba0aff6d6cbeddd63473b7ffe5e979b4a0d956d1c2271422a67f451555ea5f4e","LICENSE":"036bf6b6d6fd6dd1abda2ff6cdb672a63bdf32c468048720072910f2268a965f","README.md":"c5854ea5d60a3e3a0e89e9ed04b6b3653efe6d7e941894a734888abd52bf9212","src/archive/mod.rs":"ae739638d7267011bedf51712516d3485171d8f2df2ab6746a0d942d86efd6a6","src/elf/compression_header.rs":"2eb5fdda9177c1c897310d86714967de019b39c6e23b1f3a890dd3a659be0acc","src/elf/constants_header.rs":"f2ede290ecacf60b1719e9994aa45612bf0f7baf63806a293d4530a674e5861a","src/elf/constants_relocation.rs":"a010071cd2a25ab71e0c7181eb1d9f417daa2d1ec25a09c74bd12ad944892225","src/elf/dynamic.rs":"c26e75311f2da9e34dc4c0a2120dfcc20df88a41d67c52b9bf703258de018fd8","src/elf/gnu_hash.rs":"7a9fcaf6cb38167d20527364bdf9bc2379c44dede5d7666275a1eb20dc665179","src/elf/header.rs":"3391a1fa9b8e3923f7ce74caff0668d8ddb5b34767bf3da309ff497fd81c34c7","src/elf/mod.rs":"d2ecb62524d7da16a0f46b4b8fa43929839d6897ca93c9bb8f5299d76d66a977","src/elf/note.rs":"3c354f1108fa8e5a69f6cf629a36b61241a321f235a429d9e9900aa7a4c02f46","src/elf/program_header.rs":"7d934c7c761fc73b1a30a8fc2b048d98511b529dd5429cb0848b4bdd5dcdade7","src/elf/reloc.rs":"a4b7843c0e201f83c344c0681dfd285754a7211e3472ddd53024a520e17c847f","src/elf/section_header.rs":"ca52e85f6a0e10177368f2790d41bc9ae3348216bbd4393d483f0646030e1cc7","src/elf/sym.rs":"045c01107f4e100d6827cb819b82a28ea10c0d9bc00a1cdddb04a0865f1162ec","src/elf/symver.rs":"3f899201f64a702653d44288f860003e7acd75e38111d36479af823ed92b1341","src/error.rs":"af620a5692bca070dc727d49cdbb566a533bfb97724ca68932ae7fec7dc05cf6","src/lib.rs":"465eb53b540dfd142d204984ee7280130542d7f83d6c53691299d773f7394faf","src/mach/bind_opcodes.rs":"1dcacfb853d05c2c7e6dbb4509ee705a8ea645db0d334991a2293fef92eee851","src/mach/constants.rs":"c2a2381a0b9c3047d37582465e8965d995dca414d0da21fb7bcc6b8334e49eb6","src/mach/exports.rs":"d22122744673a3ce5f54b2b4b20bfa47d17378e64d3dda2858dd13add74ed3dc","src/mach/fat.rs":"45a3228aaa1ab8b77f322dd4924b7383f1357e226ffc079846d67c0268389ea7","src/mach/header.rs":"ae15265e9f1a92eb9ba04333e5bb309f276e1300b87f43386f7829e820318938","src/mach/imports.rs":"2153269dfff32e23d72f76a82d658be06bd79b7e35d79b7e17115e4eb24b13d5","src/mach/load_command.rs":"6435666c46e875610375b92b1ab1e3fdc9f6048d51728d996dd4531329eb3d39","src/mach/mod.rs":"53ad219fd2265a5689ab38d5031722268eab6bbb649c75756e74295df4b611b7","src/mach/relocation.rs":"11b0b76ed7d997c87e396100515f931fe84473c228bed0e980fbab311530070a","src/mach/segment.rs":"0dc29bf42b25f60c7258bc8b757f6a862e846582dd6d2e70737933ad6334a0e4","src/mach/symbols.rs":"d2505fa8d65ea267abfcb6a9fc4d1acd47d5605aa6775935757e2fa8e92af507","src/pe/characteristic.rs":"6f810a6e5646b922cf7e3ca6d314677a4e1e1ad5695278c2b1b527a05f4299f3","src/pe/data_directories.rs":"d4e156f0c5b509860ceb3c7d42e1621e6c2143b90fc412806b3cefab1acc577a","src/pe/debug.rs":"3811c616a9b6d6b54e15348bb369b794bb89532e04fe19eca91b745d7c51a553","src/pe/exception.rs":"de2c9c07812ecd315c8400fc8fdcadc6a44d7a8be96e69a3f4ccf14ef8cf8426","src/pe/export.rs":"c98f5ce0b1b18bb87f06d1d41dbf70f443d65ecb1624cb23a1ef6c5f93a892e1","src/pe/header.rs":"f02a4beddc00ddd6624df7defc42991ceb507360b5aa1003cf33332c1c89a743","src/pe/import.rs":"855276e46c01ccd7631104e4d1265592e36c9468aadcacc937a40c29d94aabe3","src/pe/mod.rs":"f43524ceb77ad263a094eea038f81f010fc6f1de1d144f24218ee3224abab0fd","src/pe/optional_header.rs":"f3fb9aec04fccde3b765ec3d54cb27bfe636efceb94ddbe34e88098e28f56b55","src/pe/options.rs":"b38f4e87f13ae381712621786f89e931452b2b4857a7bb6f140c4c21a63aa652","src/pe/relocation.rs":"c479b80bb1d6910f2168505dda4f2d8925b7edc34bed4e25d069546f88f52bb3","src/pe/section_table.rs":"d7144c7be3242d7aa653d22dca1cf15f7110f79a946a15cbe6ecf531e0cacb19","src/pe/symbol.rs":"9a65226c93c4499e21d094ceb838d58db706951580a1c43dfb36b95dbaff70f0","src/pe/utils.rs":"907cc565030db20f694c72a2a9b89ec8038e4f2593e6233b65d2a6854738e6d1","src/strtab.rs":"6d122084cf5d5244b2bd734b1d6d2c018116cc537ffc0c81d042d5b8815d7782","tests/bins/elf/gnu_hash/README.md":"52581e2ea7067a55bd8aedf4079200fb76448573ae9ffef7d886b9556e980db9"},"package":"572564d6cba7d09775202c8e7eebc4d534d5ae36578ab402fb21e182a0ac9505"}
{"files":{"CHANGELOG.md":"f58fcd94ba37c97b658a3b7c4164136f782680d06ca71102613bb16a364c5c78","Cargo.toml":"ad3ba4ac887440a8b6738072791d2cd3bc8932d9494093a97311ef78bc3830fe","LICENSE":"036bf6b6d6fd6dd1abda2ff6cdb672a63bdf32c468048720072910f2268a965f","README.md":"5db58c51a339f81752b8346ca4801547e6a387b2cd89869b27e6b38bcda1078f","src/archive/mod.rs":"6e54bfffcb3b259dbaecd1b6b8bcf2ed317e7cb7b59cb512b6c690a8a92c140c","src/elf/compression_header.rs":"2eb5fdda9177c1c897310d86714967de019b39c6e23b1f3a890dd3a659be0acc","src/elf/constants_header.rs":"f2ede290ecacf60b1719e9994aa45612bf0f7baf63806a293d4530a674e5861a","src/elf/constants_relocation.rs":"a010071cd2a25ab71e0c7181eb1d9f417daa2d1ec25a09c74bd12ad944892225","src/elf/dynamic.rs":"bb0daccdfb14df7cdbdf345e2290e02ae5f9ebf8146d0e113b363feb2e306dc0","src/elf/gnu_hash.rs":"7a9fcaf6cb38167d20527364bdf9bc2379c44dede5d7666275a1eb20dc665179","src/elf/header.rs":"3391a1fa9b8e3923f7ce74caff0668d8ddb5b34767bf3da309ff497fd81c34c7","src/elf/mod.rs":"d2ecb62524d7da16a0f46b4b8fa43929839d6897ca93c9bb8f5299d76d66a977","src/elf/note.rs":"3c354f1108fa8e5a69f6cf629a36b61241a321f235a429d9e9900aa7a4c02f46","src/elf/program_header.rs":"7d934c7c761fc73b1a30a8fc2b048d98511b529dd5429cb0848b4bdd5dcdade7","src/elf/reloc.rs":"a4b7843c0e201f83c344c0681dfd285754a7211e3472ddd53024a520e17c847f","src/elf/section_header.rs":"ca52e85f6a0e10177368f2790d41bc9ae3348216bbd4393d483f0646030e1cc7","src/elf/sym.rs":"045c01107f4e100d6827cb819b82a28ea10c0d9bc00a1cdddb04a0865f1162ec","src/elf/symver.rs":"3f899201f64a702653d44288f860003e7acd75e38111d36479af823ed92b1341","src/error.rs":"af620a5692bca070dc727d49cdbb566a533bfb97724ca68932ae7fec7dc05cf6","src/lib.rs":"f592c9fb610e910b0eece8b7ee8685eed7de8556bb4d8df43c0fd55109b3304b","src/mach/bind_opcodes.rs":"1dcacfb853d05c2c7e6dbb4509ee705a8ea645db0d334991a2293fef92eee851","src/mach/constants.rs":"c2a2381a0b9c3047d37582465e8965d995dca414d0da21fb7bcc6b8334e49eb6","src/mach/exports.rs":"d22122744673a3ce5f54b2b4b20bfa47d17378e64d3dda2858dd13add74ed3dc","src/mach/fat.rs":"45a3228aaa1ab8b77f322dd4924b7383f1357e226ffc079846d67c0268389ea7","src/mach/header.rs":"ae15265e9f1a92eb9ba04333e5bb309f276e1300b87f43386f7829e820318938","src/mach/imports.rs":"2153269dfff32e23d72f76a82d658be06bd79b7e35d79b7e17115e4eb24b13d5","src/mach/load_command.rs":"6435666c46e875610375b92b1ab1e3fdc9f6048d51728d996dd4531329eb3d39","src/mach/mod.rs":"462c6bcf3d948a545076dca04016ff1613476f8b667021f7ee6156b630a06b22","src/mach/relocation.rs":"11b0b76ed7d997c87e396100515f931fe84473c228bed0e980fbab311530070a","src/mach/segment.rs":"0dc29bf42b25f60c7258bc8b757f6a862e846582dd6d2e70737933ad6334a0e4","src/mach/symbols.rs":"500190db6d82fc4d807fc6039c5049b6446e2f3f71228088a7e0abe58ac1e9ee","src/pe/characteristic.rs":"6f810a6e5646b922cf7e3ca6d314677a4e1e1ad5695278c2b1b527a05f4299f3","src/pe/data_directories.rs":"d4e156f0c5b509860ceb3c7d42e1621e6c2143b90fc412806b3cefab1acc577a","src/pe/debug.rs":"c7a6ce316fc108a7309502674af3aa5521d594dfb5fdc373bfabe01521443224","src/pe/exception.rs":"de2c9c07812ecd315c8400fc8fdcadc6a44d7a8be96e69a3f4ccf14ef8cf8426","src/pe/export.rs":"c98f5ce0b1b18bb87f06d1d41dbf70f443d65ecb1624cb23a1ef6c5f93a892e1","src/pe/header.rs":"f964bd1157f04820a537d79faad1015195d49be01ec6ec5e4e205abd10ee923e","src/pe/import.rs":"855276e46c01ccd7631104e4d1265592e36c9468aadcacc937a40c29d94aabe3","src/pe/mod.rs":"f43524ceb77ad263a094eea038f81f010fc6f1de1d144f24218ee3224abab0fd","src/pe/optional_header.rs":"f3fb9aec04fccde3b765ec3d54cb27bfe636efceb94ddbe34e88098e28f56b55","src/pe/options.rs":"b38f4e87f13ae381712621786f89e931452b2b4857a7bb6f140c4c21a63aa652","src/pe/relocation.rs":"c479b80bb1d6910f2168505dda4f2d8925b7edc34bed4e25d069546f88f52bb3","src/pe/section_table.rs":"d7144c7be3242d7aa653d22dca1cf15f7110f79a946a15cbe6ecf531e0cacb19","src/pe/symbol.rs":"9a65226c93c4499e21d094ceb838d58db706951580a1c43dfb36b95dbaff70f0","src/pe/utils.rs":"907cc565030db20f694c72a2a9b89ec8038e4f2593e6233b65d2a6854738e6d1","src/strtab.rs":"6d122084cf5d5244b2bd734b1d6d2c018116cc537ffc0c81d042d5b8815d7782","tests/bins/elf/gnu_hash/README.md":"52581e2ea7067a55bd8aedf4079200fb76448573ae9ffef7d886b9556e980db9"},"package":"a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143"}

View File

@@ -5,20 +5,6 @@ Before 1.0, this project does not adhere to [Semantic Versioning](http://semver.
Goblin is now 0.5, which means we will try our best to ease breaking changes. Tracking issue is here: https://github.com/m4b/goblin/issues/97
## [0.6.0] - 2022-10-23
### Breaking
macho: add support for archives in multi-arch binaries, big thanks to @nick96: https://github.com/m4b/goblin/pull/322
### Changed
elf: only consider loadable segments for VM translation (this may semantically break someone, if they depended on older behavior), thanks @lumag: https://github.com/m4b/goblin/pull/329
### Fixed
archive: fix potential panic in bsd filenames, thanks @nathaniel-daniel: https://github.com/m4b/goblin/pull/335
archive: fix subtract with overflow, thanks @anfedotoff: https://github.com/m4b/goblin/pull/333
pe: fix oob access, thanks @anfedetoff: https://github.com/m4b/goblin/pull/330
archive: fix oob access, thanks @anfedetoff: https://github.com/m4b/goblin/pull/329
### Added
pe: add machine_to_str utility function, thanks @cgzones: https://github.com/m4b/goblin/pull/338
fuzz: add debug info for line numbers, thanks @SweetVishnya: https://github.com/m4b/goblin/pull/336
## [0.5.4] - 2022-8-14
### Fixed
pe: fix regression in PE binary parsing, thanks @SquareMan: https://github.com/m4b/goblin/pull/321

View File

@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56.0"
name = "goblin"
version = "0.6.0"
version = "0.5.4"
authors = [
"m4b <m4b.github.io@gmail.com>",
"seu <seu@panopticon.re>",
@@ -81,12 +81,10 @@ endian_fd = ["alloc"]
mach32 = [
"alloc",
"endian_fd",
"archive",
]
mach64 = [
"alloc",
"endian_fd",
"archive",
]
pe32 = [
"alloc",

View File

@@ -26,7 +26,7 @@ Add to your `Cargo.toml`
```toml
[dependencies]
goblin = "0.6"
goblin = "0.5"
```
### Features
@@ -110,7 +110,6 @@ In lexicographic order:
- [@2vg]
- [@alessandrod]
- [@amanieu]
- [@anfedotoff]
- [@apalm]
- [@burjui]
- [@connorkuehl]
@@ -135,7 +134,6 @@ In lexicographic order:
- [@Lichtso]
- [@lion128]
- [@llogiq]
- [@lumag]
- [@lzutao]
- [@lzybkr]
- [@m4b]
@@ -145,8 +143,6 @@ In lexicographic order:
- [@mre]
- [@Mrmaxmeier]
- [n01e0]
- [nathaniel-daniel]
- [@nick96]
- [@nico-abram]
- [@npmccallum]
- [@pchickey]
@@ -159,7 +155,6 @@ In lexicographic order:
- [@skdltmxn]
- [@sollyucko]
- [@Swatinem]
- [@SweetVishnya]
- [@SquareMan]
- [@tathanhdinh]
- [@Techno-coder]
@@ -179,7 +174,6 @@ In lexicographic order:
[@2vg]: https://github.com/2vg
[@alessandrod]: https://github.com/alessandrod
[@amanieu]: https://github.com/amanieu
[@anfedotoff]: https://github.com/anfedotoff
[@apalm]: https://github.com/apalm
[@burjui]: https://github.com/burjui
[@connorkuehl]: https://github.com/connorkuehl
@@ -204,7 +198,6 @@ In lexicographic order:
[@Lichtso]: https://github.com/Lichtso
[@lion128]: https://github.com/lion128
[@llogiq]: https://github.com/llogiq
[@lumag]: https://github.com/lumag
[@lzutao]: https://github.com/lzutao
[@lzybkr]: https://github.com/lzybkr
[@m4b]: https://github.com/m4b
@@ -214,8 +207,6 @@ In lexicographic order:
[@mre]: https://github.com/mre
[@Mrmaxmeier]: https://github.com/Mrmaxmeier
[n01e0]: https://github.com/n01e0
[nathaniel-daniel]: https://github.com/nathaniel-daniel
[@nick96]: https://github.com/nick96
[@nico-abram]: https://github.com/nico-abram
[@npmccallum]: https://github.com/npmccallum
[@pchickey]: https://github.com/pchickey
@@ -228,7 +219,6 @@ In lexicographic order:
[@skdltmxn]: https://github.com/skdltmxn
[@sollyucko]: https://github.com/sollyucko
[@Swatinem]: https://github.com/Swatinem
[@SweetVishnya]: https://github.com/SweetVishnya
[@SquareMan]: https://github.com/SquareMan
[@tathanhdinh]: https://github.com/tathanhdinh
[@Techno-coder]: https://github.com/Techno-coder

View File

@@ -132,15 +132,11 @@ impl<'a> Member<'a> {
)?;
// adjust the offset and size accordingly
if header.size > len {
*offset = header_offset + SIZEOF_HEADER + len;
header.size -= len;
*offset = header_offset + SIZEOF_HEADER + len;
header.size -= len;
// the name may have trailing NULs which we don't really want to keep
Some(name.trim_end_matches('\0'))
} else {
None
}
// the name may have trailing NULs which we don't really want to keep
Some(name.trim_end_matches('\0'))
} else {
None
};
@@ -164,8 +160,8 @@ impl<'a> Member<'a> {
fn bsd_filename_length(name: &str) -> Option<usize> {
use core::str::FromStr;
if let Some(name) = name.strip_prefix("#1/") {
let trimmed_name = name.trim_end_matches(' ');
if name.len() > 3 && &name[0..3] == "#1/" {
let trimmed_name = &name[3..].trim_end_matches(' ');
if let Ok(len) = usize::from_str(trimmed_name) {
Some(len)
} else {
@@ -342,13 +338,8 @@ impl<'a> Index<'a> {
let mut symbol_offsets = Vec::with_capacity(symbols);
for _ in 0..symbols {
if let Some(symbol_offset) =
member_offsets.get(buffer.gread_with::<u16>(offset, scroll::LE)? as usize - 1)
{
symbol_offsets.push(*symbol_offset);
} else {
return Err(Error::BufferTooShort(members, "members"));
}
symbol_offsets
.push(member_offsets[buffer.gread_with::<u16>(offset, scroll::LE)? as usize - 1]);
}
let strtab = strtab::Strtab::parse(buffer, *offset, buffer.len() - *offset, 0x0)?;
Ok(Index {
@@ -620,7 +611,6 @@ mod tests {
assert_eq!(Member::bsd_filename_length("#2/1"), None);
assert_eq!(Member::bsd_filename_length(INDEX_NAME), None);
assert_eq!(Member::bsd_filename_length(NAME_INDEX_NAME), None);
assert_eq!(Member::bsd_filename_length("👺"), None);
// #1/<len> should be parsed as Some(len), with or without whitespace
assert_eq!(Member::bsd_filename_length("#1/1"), Some(1));

View File

@@ -582,7 +582,7 @@ macro_rules! elf_dynamic_info_std_impl {
/// Convert a virtual memory address to a file offset
fn vm_to_offset(phdrs: &[$phdr], address: $size) -> Option<$size> {
for ph in phdrs {
if ph.p_type == crate::elf::program_header::PT_LOAD && address >= ph.p_vaddr {
if address >= ph.p_vaddr {
let offset = address - ph.p_vaddr;
if offset < ph.p_memsz {
return ph.p_offset.checked_add(offset);

View File

@@ -201,33 +201,6 @@ pub mod container {
}
}
/// Takes a reference to the first 16 bytes of the total bytes slice and convert it to an array for `peek_bytes` to use.
/// Returns None if bytes's length is less than 16.
#[allow(unused)]
fn take_hint_bytes(bytes: &[u8]) -> Option<&[u8; 16]> {
bytes
.get(0..16)
.and_then(|hint_bytes_slice| hint_bytes_slice.try_into().ok())
}
#[derive(Debug, Default)]
/// Information obtained from a peek `Hint`
pub struct HintData {
pub is_lsb: bool,
pub is_64: Option<bool>,
}
#[derive(Debug)]
/// A hint at the underlying binary format for 16 bytes of arbitrary data
pub enum Hint {
Elf(HintData),
Mach(HintData),
MachFat(usize),
PE,
Archive,
Unknown(u64),
}
macro_rules! if_everything {
($($i:item)*) => ($(
#[cfg(all(feature = "endian_fd", feature = "elf64", feature = "elf32", feature = "pe64", feature = "pe32", feature = "mach64", feature = "mach32", feature = "archive"))]
@@ -237,9 +210,28 @@ macro_rules! if_everything {
if_everything! {
#[derive(Debug, Default)]
/// Information obtained from a peek `Hint`
pub struct HintData {
pub is_lsb: bool,
pub is_64: Option<bool>,
}
#[derive(Debug)]
/// A hint at the underlying binary format for 16 bytes of arbitrary data
pub enum Hint {
Elf(HintData),
Mach(HintData),
MachFat(usize),
PE,
Archive,
Unknown(u64),
}
/// Peeks at `bytes`, and returns a `Hint`
pub fn peek_bytes(bytes: &[u8; 16]) -> error::Result<Hint> {
use scroll::{Pread, LE};
use scroll::{Pread, LE, BE};
use crate::mach::{fat, header};
if &bytes[0..elf::header::SELFMAG] == elf::header::ELFMAG {
let class = bytes[elf::header::EI_CLASS];
let is_lsb = bytes[elf::header::EI_DATA] == elf::header::ELFDATA2LSB;
@@ -256,7 +248,23 @@ if_everything! {
} else if (&bytes[0..2]).pread_with::<u16>(0, LE)? == pe::header::DOS_MAGIC {
Ok(Hint::PE)
} else {
mach::peek_bytes(bytes)
let (magic, maybe_ctx) = mach::parse_magic_and_ctx(bytes, 0)?;
match magic {
fat::FAT_MAGIC => {
// should probably verify this is always Big Endian...
let narchitectures = bytes.pread_with::<u32>(4, BE)? as usize;
Ok(Hint::MachFat(narchitectures))
},
header::MH_CIGAM_64 | header::MH_CIGAM | header::MH_MAGIC_64 | header::MH_MAGIC => {
if let Some(ctx) = maybe_ctx {
Ok(Hint::Mach(HintData { is_lsb: ctx.le.is_little(), is_64: Some(ctx.container.is_big()) }))
} else {
Err(error::Error::Malformed(format!("Correct mach magic {:#x} does not have a matching parsing context!", magic)))
}
},
// its something else
_ => Ok(Hint::Unknown(bytes.pread::<u64>(0)?))
}
}
}
@@ -271,6 +279,16 @@ if_everything! {
peek_bytes(&bytes)
}
/// Takes a reference to the first 16 bytes of the total bytes slice and convert it to an array for `peek_bytes` to use.
/// Returns None if bytes's length is less than 16.
fn take_hint_bytes(bytes: &[u8]) -> Option<&[u8; 16]> {
use core::convert::TryInto;
bytes.get(0..16)
.and_then(|hint_bytes_slice| {
hint_bytes_slice.try_into().ok()
})
}
#[derive(Debug)]
#[allow(clippy::large_enum_variant)]
/// A parseable object that goblin understands

View File

@@ -7,8 +7,8 @@ use log::debug;
use scroll::ctx::SizeWith;
use scroll::{Pread, BE};
use crate::{archive, container};
use crate::{error, take_hint_bytes};
use crate::container;
use crate::error;
pub mod bind_opcodes;
pub mod constants;
@@ -296,15 +296,6 @@ pub struct FatArchIterator<'a> {
start: usize,
}
/// A single architecture froma multi architecture binary container
/// ([MultiArch]).
#[derive(Debug)]
#[allow(clippy::large_enum_variant)]
pub enum SingleArch<'a> {
MachO(MachO<'a>),
Archive(archive::Archive<'a>),
}
impl<'a> Iterator for FatArchIterator<'a> {
type Item = error::Result<fat::FatArch>;
fn next(&mut self) -> Option<Self::Item> {
@@ -322,65 +313,16 @@ impl<'a> Iterator for FatArchIterator<'a> {
}
}
/// Iterator over every entry contained in this `MultiArch` container
pub struct SingleArchIterator<'a> {
/// Iterator over every `MachO` binary contained in this `MultiArch` container
pub struct MachOIterator<'a> {
index: usize,
data: &'a [u8],
narches: usize,
start: usize,
}
pub fn peek_bytes(bytes: &[u8; 16]) -> error::Result<crate::Hint> {
if &bytes[0..archive::SIZEOF_MAGIC] == archive::MAGIC {
Ok(crate::Hint::Archive)
} else {
let (magic, maybe_ctx) = parse_magic_and_ctx(bytes, 0)?;
match magic {
header::MH_CIGAM_64 | header::MH_CIGAM | header::MH_MAGIC_64 | header::MH_MAGIC => {
if let Some(ctx) = maybe_ctx {
Ok(crate::Hint::Mach(crate::HintData {
is_lsb: ctx.le.is_little(),
is_64: Some(ctx.container.is_big()),
}))
} else {
Err(error::Error::Malformed(format!(
"Correct mach magic {:#x} does not have a matching parsing context!",
magic
)))
}
}
fat::FAT_MAGIC => {
// should probably verify this is always Big Endian...
let narchitectures = bytes.pread_with::<u32>(4, BE)? as usize;
Ok(crate::Hint::MachFat(narchitectures))
}
_ => Ok(crate::Hint::Unknown(bytes.pread::<u64>(0)?)),
}
}
}
fn extract_multi_entry(bytes: &[u8]) -> error::Result<SingleArch> {
if let Some(hint_bytes) = take_hint_bytes(bytes) {
match peek_bytes(hint_bytes)? {
crate::Hint::Mach(_) => {
let binary = MachO::parse(bytes, 0)?;
Ok(SingleArch::MachO(binary))
}
crate::Hint::Archive => {
let archive = archive::Archive::parse(bytes)?;
Ok(SingleArch::Archive(archive))
}
_ => Err(error::Error::Malformed(format!(
"multi-arch entry must be a Mach-O binary or an archive"
))),
}
} else {
Err(error::Error::Malformed(format!("Object is too small")))
}
}
impl<'a> Iterator for SingleArchIterator<'a> {
type Item = error::Result<SingleArch<'a>>;
impl<'a> Iterator for MachOIterator<'a> {
type Item = error::Result<MachO<'a>>;
fn next(&mut self) -> Option<Self::Item> {
if self.index >= self.narches {
None
@@ -391,7 +333,8 @@ impl<'a> Iterator for SingleArchIterator<'a> {
match self.data.pread_with::<fat::FatArch>(offset, scroll::BE) {
Ok(arch) => {
let bytes = arch.slice(self.data);
Some(extract_multi_entry(bytes))
let binary = MachO::parse(bytes, 0);
Some(binary)
}
Err(e) => Some(Err(e.into())),
}
@@ -400,10 +343,10 @@ impl<'a> Iterator for SingleArchIterator<'a> {
}
impl<'a, 'b> IntoIterator for &'b MultiArch<'a> {
type Item = error::Result<SingleArch<'a>>;
type IntoIter = SingleArchIterator<'a>;
type Item = error::Result<MachO<'a>>;
type IntoIter = MachOIterator<'a>;
fn into_iter(self) -> Self::IntoIter {
SingleArchIterator {
MachOIterator {
index: 0,
data: self.data,
narches: self.narches,
@@ -444,7 +387,7 @@ impl<'a> MultiArch<'a> {
Ok(arches)
}
/// Try to get the Mach-o binary at `index`
pub fn get(&self, index: usize) -> error::Result<SingleArch<'a>> {
pub fn get(&self, index: usize) -> error::Result<MachO<'a>> {
if index >= self.narches {
return Err(error::Error::Malformed(format!(
"Requested the {}-th binary, but there are only {} architectures in this container",
@@ -454,13 +397,13 @@ impl<'a> MultiArch<'a> {
let offset = (index * fat::SIZEOF_FAT_ARCH) + self.start;
let arch = self.data.pread_with::<fat::FatArch>(offset, scroll::BE)?;
let bytes = arch.slice(self.data);
extract_multi_entry(bytes)
Ok(MachO::parse(bytes, 0)?)
}
pub fn find<F: Fn(error::Result<fat::FatArch>) -> bool>(
&'a self,
f: F,
) -> Option<error::Result<SingleArch<'a>>> {
) -> Option<error::Result<MachO<'a>>> {
for (i, arch) in self.iter_arches().enumerate() {
if f(arch) {
return Some(self.get(i));
@@ -521,66 +464,3 @@ impl<'a> Mach<'a> {
}
}
}
#[cfg(test)]
mod test {
use super::{Mach, SingleArch};
#[test]
fn parse_multi_arch_of_macho_binaries() {
// Create via:
// clang -arch arm64 -shared -o /tmp/hello_world_arm hello_world.c
// clang -arch x86_64 -shared -o /tmp/hello_world_x86_64 hello_world.c
// lipo -create -output hello_world_fat_binaries /tmp/hello_world_arm /tmp/hello_world_x86_64
// strip hello_world_fat_binaries
let bytes = include_bytes!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/assets/hello_world_fat_binaries"
));
let mach = Mach::parse(bytes).expect("failed to parse input file");
match mach {
Mach::Fat(fat) => {
assert!(fat.into_iter().count() > 0);
for entry in fat.into_iter() {
let entry = entry.expect("failed to read entry");
match entry {
SingleArch::MachO(macho) => {
assert!(macho.symbols().count() > 0);
}
_ => panic!("expected MultiArchEntry::MachO, got {:?}", entry),
}
}
}
Mach::Binary(_) => panic!("expected Mach::Fat, got Mach::Binary"),
}
}
#[test]
fn parse_multi_arch_of_archives() {
// Created with:
// clang -c -o /tmp/hello_world.o hello_world.c
// ar -r /tmp/hello_world.a /tmp/hello_world.o
// lipo -create -output hello_world_fat_archives /tmp/hello_world.a
// strip hello_world_fat_archives
let bytes = include_bytes!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/assets/hello_world_fat_archives"
));
let mach = Mach::parse(bytes).expect("failed to parse input file");
match mach {
Mach::Fat(fat) => {
assert!(fat.into_iter().count() > 0);
for entry in fat.into_iter() {
let entry = entry.expect("failed to read entry");
match entry {
SingleArch::Archive(archive) => {
assert!(!archive.members().is_empty())
}
_ => panic!("expected MultiArchEntry::Archive, got {:?}", entry),
}
}
}
Mach::Binary(_) => panic!("expected Mach::Fat, got Mach::Binary"),
}
}
}

View File

@@ -314,8 +314,8 @@ impl ctx::TryIntoCtx<container::Ctx> for Nlist {
container::Ctx { container, le }: container::Ctx,
) -> Result<usize, Self::Error> {
let size = match container {
Container::Little => bytes.pwrite_with::<Nlist32>(self.into(), 0, le)?,
Container::Big => bytes.pwrite_with::<Nlist64>(self.into(), 0, le)?,
Container::Little => (bytes.pwrite_with::<Nlist32>(self.into(), 0, le)?),
Container::Big => (bytes.pwrite_with::<Nlist64>(self.into(), 0, le)?),
};
Ok(size)
}

View File

@@ -169,18 +169,13 @@ impl<'a> CodeviewPDB70DebugInfo<'a> {
let mut signature: [u8; 16] = [0; 16];
signature.copy_from_slice(bytes.gread_with(&mut offset, 16)?);
let age: u32 = bytes.gread_with(&mut offset, scroll::LE)?;
if let Some(filename) = bytes.get(offset..offset + filename_length) {
Ok(Some(CodeviewPDB70DebugInfo {
codeview_signature,
signature,
age,
filename,
}))
} else {
Err(error::Error::Malformed(format!(
"ImageDebugDirectory seems corrupted: {:?}",
idd
)))
}
let filename = &bytes[offset..offset + filename_length];
Ok(Some(CodeviewPDB70DebugInfo {
codeview_signature,
signature,
age,
filename,
}))
}
}

View File

@@ -215,41 +215,9 @@ impl Header {
}
}
/// Convert machine to str representation
pub fn machine_to_str(machine: u16) -> &'static str {
match machine {
COFF_MACHINE_UNKNOWN => "UNKNOWN",
COFF_MACHINE_AM33 => "AM33",
COFF_MACHINE_X86_64 => "X86_64",
COFF_MACHINE_ARM => "ARM",
COFF_MACHINE_ARM64 => "ARM64",
COFF_MACHINE_ARMNT => "ARM_NT",
COFF_MACHINE_EBC => "EBC",
COFF_MACHINE_X86 => "X86",
COFF_MACHINE_IA64 => "IA64",
COFF_MACHINE_M32R => "M32R",
COFF_MACHINE_MIPS16 => "MIPS_16",
COFF_MACHINE_MIPSFPU => "MIPS_FPU",
COFF_MACHINE_MIPSFPU16 => "MIPS_FPU_16",
COFF_MACHINE_POWERPC => "POWERPC",
COFF_MACHINE_POWERPCFP => "POWERCFP",
COFF_MACHINE_R4000 => "R4000",
COFF_MACHINE_RISCV32 => "RISC-V_32",
COFF_MACHINE_RISCV64 => "RISC-V_64",
COFF_MACHINE_RISCV128 => "RISC-V_128",
COFF_MACHINE_SH3 => "SH3",
COFF_MACHINE_SH3DSP => "SH3DSP",
COFF_MACHINE_SH4 => "SH4",
COFF_MACHINE_SH5 => "SH5",
COFF_MACHINE_THUMB => "THUMB",
COFF_MACHINE_WCEMIPSV2 => "WCE_MIPS_V2",
_ => "COFF_UNKNOWN",
}
}
#[cfg(test)]
mod tests {
use super::{machine_to_str, Header, COFF_MACHINE_X86, DOS_MAGIC, PE_MAGIC};
use super::{Header, COFF_MACHINE_X86, DOS_MAGIC, PE_MAGIC};
const CRSS_HEADER: [u8; 688] = [
0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
@@ -306,7 +274,6 @@ mod tests {
assert!(header.dos_header.signature == DOS_MAGIC);
assert!(header.signature == PE_MAGIC);
assert!(header.coff_header.machine == COFF_MACHINE_X86);
assert!(machine_to_str(header.coff_header.machine) == "X86");
println!("header: {:?}", &header);
}
}

View File

@@ -1 +1 @@
{"files":{"Cargo.toml":"40a5376941ee93f7d3d013862731eaced1121c852bd4df4affe1cd65bf9b68be","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"}
{"files":{"Cargo.toml":"b7bde8b1b6bb7e1420c9c486d7562d1639fbb82a2b6459b8b3b7d15f002377d3","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"}

View File

@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "uniffi"
version = "0.21.1"
version = "0.21.0"
authors = ["Firefox Sync Team <sync-team@mozilla.com>"]
description = "a multi-language bindings generator for rust (runtime support code)"
homepage = "https://mozilla.github.io/uniffi-rs"
@@ -23,6 +23,7 @@ keywords = [
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
resolver = "2"
[dependencies.anyhow]
version = "1"
@@ -49,11 +50,11 @@ version = "1.0"
version = "1.1.0"
[dependencies.uniffi_bindgen]
version = "=0.21.1"
version = "=0.21.0"
optional = true
[dependencies.uniffi_macros]
version = "=0.21.1"
version = "=0.21.0"
[dev-dependencies.trybuild]
version = "1"

File diff suppressed because one or more lines are too long

View File

@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "anyhow"
version = "1.0.66"
version = "1.0.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
[[package]]
name = "askama"
@@ -99,9 +99,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "3.2.23"
version = "3.2.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
dependencies = [
"atty",
"bitflags",
@@ -138,9 +138,9 @@ dependencies = [
[[package]]
name = "fs-err"
version = "2.9.0"
version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
checksum = "64db3e262960f0662f43a6366788d5f10f7f244b8f7d7d987f560baf5ded5c50"
[[package]]
name = "goblin"
@@ -176,9 +176,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "1.9.2"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
"autocfg",
"hashbrown",
@@ -192,9 +192,9 @@ checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
[[package]]
name = "libc"
version = "0.2.138"
version = "0.2.135"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
[[package]]
name = "log"
@@ -245,21 +245,21 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.16.0"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
[[package]]
name = "os_str_bytes"
version = "6.4.1"
version = "6.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
[[package]]
name = "paste"
version = "1.0.10"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1c2c742266c2f1041c914ba65355a83ae8747b05f208319784083583494b4b"
checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
[[package]]
name = "plain"
@@ -293,9 +293,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.47"
version = "1.0.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
dependencies = [
"unicode-ident",
]
@@ -337,18 +337,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.150"
version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91"
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.150"
version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e"
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
dependencies = [
"proc-macro2",
"quote",
@@ -357,21 +357,15 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.89"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "siphasher"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "strsim"
version = "0.10.0"
@@ -380,9 +374,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "syn"
version = "1.0.105"
version = "1.0.102"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
dependencies = [
"proc-macro2",
"quote",
@@ -400,15 +394,15 @@ dependencies = [
[[package]]
name = "textwrap"
version = "0.16.0"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
[[package]]
name = "toml"
version = "0.5.10"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
dependencies = [
"serde",
]
@@ -430,7 +424,7 @@ checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
[[package]]
name = "uniffi_bindgen"
version = "0.21.1"
version = "0.21.0"
dependencies = [
"anyhow",
"askama",
@@ -449,25 +443,13 @@ dependencies = [
"weedle2",
]
[[package]]
name = "uniffi_checksum_derive"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "uniffi_meta"
version = "0.21.1"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
dependencies = [
"serde",
"siphasher",
"uniffi_checksum_derive",
]
[[package]]

View File

@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "uniffi_bindgen"
version = "0.21.1"
version = "0.21.0"
authors = ["Firefox Sync Team <sync-team@mozilla.com>"]
description = "a multi-language bindings generator for rust (codegen and cli tooling)"
homepage = "https://mozilla.github.io/uniffi-rs"
@@ -23,6 +23,7 @@ keywords = [
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
resolver = "2"
[[bin]]
name = "uniffi-bindgen"
@@ -54,7 +55,7 @@ features = [
version = "2.7.0"
[dependencies.goblin]
version = "0.6"
version = "0.5"
[dependencies.heck]
version = "0.4"
@@ -75,7 +76,7 @@ version = "1.0.80"
version = "0.5"
[dependencies.uniffi_meta]
version = "=0.21.1"
version = "=0.21.0"
[dependencies.weedle2]
version = "4.0.0"

View File

@@ -15,14 +15,13 @@
//! if we grow significantly more complicated attribute handling.
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
/// Represents an attribute parsed from UDL, like `[ByRef]` or `[Throws]`.
///
/// This is a convenience enum for parsing UDL attributes and erroring out if we encounter
/// any unsupported ones. These don't convert directly into parts of a `ComponentInterface`, but
/// may influence the properties of things like functions and arguments.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub(super) enum Attribute {
ByRef,
Enum,
@@ -120,7 +119,7 @@ where
/// Attributes that can be attached to an `enum` definition in the UDL.
/// There's only one case here: using `[Error]` to mark an enum as an error class.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct EnumAttributes(Vec<Attribute>);
impl EnumAttributes {
@@ -156,7 +155,7 @@ impl<T: TryInto<EnumAttributes, Error = anyhow::Error>> TryFrom<Option<T>> for E
///
/// This supports the `[Throws=ErrorName]` attribute for functions that
/// can produce an error.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct FunctionAttributes(Vec<Attribute>);
impl FunctionAttributes {
@@ -199,7 +198,7 @@ impl<T: TryInto<FunctionAttributes, Error = anyhow::Error>> TryFrom<Option<T>>
///
/// This supports the `[ByRef]` attribute for arguments that should be passed
/// by reference in the generated Rust scaffolding.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct ArgumentAttributes(Vec<Attribute>);
impl ArgumentAttributes {
@@ -234,7 +233,7 @@ impl<T: TryInto<ArgumentAttributes, Error = anyhow::Error>> TryFrom<Option<T>>
}
/// Represents UDL attributes that might appear on an `interface` definition.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct InterfaceAttributes(Vec<Attribute>);
impl InterfaceAttributes {
@@ -288,7 +287,7 @@ impl<T: TryInto<InterfaceAttributes, Error = anyhow::Error>> TryFrom<Option<T>>
///
/// This supports the `[Throws=ErrorName]` attribute for constructors that can produce
/// an error, and the `[Name=MethodName]` for non-default constructors.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct ConstructorAttributes(Vec<Attribute>);
impl ConstructorAttributes {
@@ -327,7 +326,7 @@ impl TryFrom<&weedle::attribute::ExtendedAttributeList<'_>> for ConstructorAttri
///
/// This supports the `[Throws=ErrorName]` attribute for methods that can produce
/// an error, and the `[Self=ByArc]` attribute for methods that take `Arc<Self>` as receiver.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct MethodAttributes(Vec<Attribute>);
impl MethodAttributes {
@@ -376,7 +375,7 @@ impl<T: TryInto<MethodAttributes, Error = anyhow::Error>> TryFrom<Option<T>> for
/// Actually we only support one of these right now, `[Self=ByArc]`.
/// We might add more in future, e.g. a `[Self=ByRef]` if there are cases
/// where we need to force the receiver to be taken by reference.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub(super) enum SelfType {
ByArc, // Method receiver is `Arc<Self>`.
}
@@ -399,7 +398,7 @@ impl TryFrom<&weedle::attribute::IdentifierOrString<'_>> for SelfType {
/// Represents UDL attributes that might appear on a typedef
///
/// This supports the `[External="crate_name"]` and `[Custom]` attributes for types.
#[derive(Debug, Clone, Checksum, Default)]
#[derive(Debug, Clone, Hash, Default)]
pub(super) struct TypedefAttributes(Vec<Attribute>);
impl TypedefAttributes {

View File

@@ -33,25 +33,19 @@
//! # Ok::<(), anyhow::Error>(())
//! ```
use std::hash::{Hash, Hasher};
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::ffi::{FFIArgument, FFIFunction, FFIType};
use super::object::Method;
use super::types::{Type, TypeIterator};
use super::{APIConverter, ComponentInterface};
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone)]
pub struct CallbackInterface {
pub(super) name: String,
pub(super) methods: Vec<Method>,
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
#[checksum_ignore]
pub(super) ffi_init_callback: FFIFunction,
}
@@ -94,6 +88,19 @@ impl CallbackInterface {
}
}
impl Hash for CallbackInterface {
fn hash<H: Hasher>(&self, state: &mut H) {
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
self.name.hash(state);
self.methods.hash(state);
}
}
impl APIConverter<CallbackInterface> for weedle::CallbackInterfaceDefinition<'_> {
fn convert(&self, ci: &mut ComponentInterface) -> Result<CallbackInterface> {
if self.attributes.is_some() {

View File

@@ -77,7 +77,6 @@
//! ```
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::record::Field;
use super::types::{Type, TypeIterator};
@@ -88,7 +87,7 @@ use super::{APIConverter, ComponentInterface};
///
/// Enums are passed across the FFI by serializing to a bytebuffer, with a
/// i32 indicating the variant followed by the serialization of each field.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub struct Enum {
pub(super) name: String,
pub(super) variants: Vec<Variant>,
@@ -175,7 +174,7 @@ impl APIConverter<Enum> for weedle::InterfaceDefinition<'_> {
/// Represents an individual variant in an Enum.
///
/// Each variant has a name and zero or more fields.
#[derive(Debug, Clone, Default, Checksum)]
#[derive(Debug, Clone, Default, Hash)]
pub struct Variant {
pub(super) name: String,
pub(super) fields: Vec<Field>,

View File

@@ -83,7 +83,6 @@
//! ```
use anyhow::Result;
use uniffi_meta::Checksum;
use super::enum_::{Enum, Variant};
use super::types::{Type, TypeIterator};
@@ -95,7 +94,7 @@ use super::{APIConverter, ComponentInterface};
/// they're handled in the FFI very differently. We create them in `uniffi::call_with_result()` if
/// the wrapped function returns an `Err` value
/// struct and assign an integer error code to each variant.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub struct Error {
pub name: String,
enum_: Enum,

View File

@@ -32,9 +32,9 @@
//! # Ok::<(), anyhow::Error>(())
//! ```
use std::convert::TryFrom;
use std::hash::{Hash, Hasher};
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::ffi::{FFIArgument, FFIFunction};
use super::literal::{convert_default_value, Literal};
@@ -51,18 +51,11 @@ use super::{APIConverter, ComponentInterface};
/// and has a corresponding standalone function in the foreign language bindings.
///
/// In the FFI, this will be a standalone function with appropriately lowered types.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone)]
pub struct Function {
pub(super) name: String,
pub(super) arguments: Vec<Argument>,
pub(super) return_type: Option<Type>,
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
#[checksum_ignore]
pub(super) ffi_func: FFIFunction,
pub(super) attributes: FunctionAttributes,
}
@@ -149,6 +142,21 @@ impl From<uniffi_meta::FnMetadata> for Function {
}
}
impl Hash for Function {
fn hash<H: Hasher>(&self, state: &mut H) {
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
self.name.hash(state);
self.arguments.hash(state);
self.return_type.hash(state);
self.attributes.hash(state);
}
}
impl APIConverter<Function> for weedle::namespace::NamespaceMember<'_> {
fn convert(&self, ci: &mut ComponentInterface) -> Result<Function> {
match self {
@@ -177,7 +185,7 @@ impl APIConverter<Function> for weedle::namespace::OperationNamespaceMember<'_>
/// Represents an argument to a function/constructor/method call.
///
/// Each argument has a name and a type, along with some optional metadata.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub struct Argument {
pub(super) name: String,
pub(super) type_: Type,

View File

@@ -8,13 +8,12 @@
//! which appear in places such as default arguments.
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::types::Type;
// Represents a literal value.
// Used for e.g. default argument values.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub enum Literal {
Boolean(bool),
String(String),
@@ -36,7 +35,7 @@ pub enum Literal {
// Represent the radix of integer literal values.
// We preserve the radix into the generated bindings for readability reasons.
#[derive(Debug, Clone, Copy, Checksum)]
#[derive(Debug, Clone, Copy, Hash)]
pub enum Radix {
Decimal = 10,
Octal = 8,

View File

@@ -44,7 +44,12 @@
//!
//! * Error messages and general developer experience leave a lot to be desired.
use std::{collections::HashSet, convert::TryFrom, iter};
use std::{
collections::HashSet,
convert::TryFrom,
hash::{Hash, Hasher},
iter,
};
use anyhow::{bail, Result};
@@ -72,26 +77,22 @@ pub use record::{Field, Record};
pub mod ffi;
pub use ffi::{FFIArgument, FFIFunction, FFIType};
use uniffi_meta::{Checksum, MethodMetadata, ObjectMetadata};
use uniffi_meta::{MethodMetadata, ObjectMetadata};
/// The main public interface for this module, representing the complete details of an interface exposed
/// by a rust component and the details of consuming it via an extern-C FFI layer.
///
#[derive(Debug, Default, Checksum)]
#[derive(Debug, Default)]
pub struct ComponentInterface {
/// Every ComponentInterface gets tagged with the version of uniffi used to create it.
/// This helps us avoid using a lib compiled with one version together with bindings created
/// using a different version, which might introduce unsafety.
uniffi_version: String,
/// All of the types used in the interface.
// We can't checksum `self.types`, but its contents are implied by the other fields
// anyway, so it's safe to ignore it.
#[checksum_ignore]
pub(super) types: TypeUniverse,
/// The unique prefix that we'll use for namespacing when exposing this component's API.
namespace: String,
/// The internal unique prefix used to namespace FFI symbols
#[checksum_ignore]
ffi_namespace: String,
/// The high-level API provided by the component.
enums: Vec<Enum>,
@@ -320,8 +321,16 @@ impl ComponentInterface {
/// - They were generated from two different WebIDL files.
/// - They were generated by two different versions of uniffi
///
/// The checksum may or may not change depending on the version of Rust used; since we expect
/// consumers to be using the same executable to generate both the scaffolding and the bindings,
/// assuming the same version of Rust seems acceptable.
///
/// Note that this is designed to prevent accidents, not attacks, so there is no need for the
/// checksum to be cryptographically secure.
///
/// TODO: it's not clear to me if the derivation of `Hash` is actually deterministic enough to
/// ensure the guarantees above, or if it might be sensitive to e.g. compiler-driven re-ordering
/// of struct field. Let's see how it goes...
pub fn checksum(&self) -> u16 {
uniffi_meta::checksum(self)
}
@@ -663,6 +672,23 @@ impl ComponentInterface {
}
}
/// `ComponentInterface` structs can be hashed, but this is mostly a convenient way to
/// produce a checksum of their contents. They're not really intended to live in a hashtable.
impl Hash for ComponentInterface {
fn hash<H: Hasher>(&self, state: &mut H) {
// We can't hash `self.types`, but its contents are implied by the other fields
// anyway, so it's safe to ignore it.
self.uniffi_version.hash(state);
self.namespace.hash(state);
self.enums.hash(state);
self.records.hash(state);
self.functions.hash(state);
self.objects.hash(state);
self.callback_interfaces.hash(state);
self.errors.hash(state);
}
}
fn get_or_insert_object<'a>(objects: &'a mut Vec<Object>, name: &str) -> &'a mut Object {
// The find-based way of writing this currently runs into a borrow checker
// error, so we use position

View File

@@ -58,10 +58,10 @@
//! ```
use std::convert::TryFrom;
use std::hash::{Hash, Hasher};
use std::{collections::HashSet, iter};
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::ffi::{FFIArgument, FFIFunction, FFIType};
use super::function::Argument;
@@ -86,20 +86,12 @@ use super::{APIConverter, ComponentInterface};
///
/// TODO:
/// - maybe "Class" would be a better name than "Object" here?
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone)]
pub struct Object {
pub(super) name: String,
pub(super) constructors: Vec<Constructor>,
pub(super) methods: Vec<Method>,
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
#[checksum_ignore]
pub(super) ffi_func_free: FFIFunction,
#[checksum_ignore]
pub(super) uses_deprecated_threadsafe_attribute: bool,
}
@@ -198,6 +190,20 @@ impl Object {
}
}
impl Hash for Object {
fn hash<H: Hasher>(&self, state: &mut H) {
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
self.name.hash(state);
self.constructors.hash(state);
self.methods.hash(state);
}
}
impl APIConverter<Object> for weedle::InterfaceDefinition<'_> {
fn convert(&self, ci: &mut ComponentInterface) -> Result<Object> {
if self.inheritance.is_some() {
@@ -239,17 +245,10 @@ impl APIConverter<Object> for weedle::InterfaceDefinition<'_> {
//
// In the FFI, this will be a function that returns a pointer to an instance
// of the corresponding object type.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone)]
pub struct Constructor {
pub(super) name: String,
pub(super) arguments: Vec<Argument>,
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
#[checksum_ignore]
pub(super) ffi_func: FFIFunction,
pub(super) attributes: ConstructorAttributes,
}
@@ -300,6 +299,20 @@ impl Constructor {
}
}
impl Hash for Constructor {
fn hash<H: Hasher>(&self, state: &mut H) {
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
self.name.hash(state);
self.arguments.hash(state);
self.attributes.hash(state);
}
}
impl Default for Constructor {
fn default() -> Self {
Constructor {
@@ -330,19 +343,12 @@ impl APIConverter<Constructor> for weedle::interface::ConstructorInterfaceMember
//
// The FFI will represent this as a function whose first/self argument is a
// `FFIType::RustArcPtr` to the instance.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone)]
pub struct Method {
pub(super) name: String,
pub(super) object_name: String,
pub(super) arguments: Vec<Argument>,
pub(super) return_type: Option<Type>,
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
#[checksum_ignore]
pub(super) arguments: Vec<Argument>,
pub(super) ffi_func: FFIFunction,
pub(super) attributes: MethodAttributes,
}
@@ -444,6 +450,22 @@ impl From<uniffi_meta::MethodMetadata> for Method {
}
}
impl Hash for Method {
fn hash<H: Hasher>(&self, state: &mut H) {
// We don't include the FFIFunc in the hash calculation, because:
// - it is entirely determined by the other fields,
// so excluding it is safe.
// - its `name` property includes a checksum derived from the very
// hash value we're trying to calculate here, so excluding it
// avoids a weird circular depenendency in the calculation.
self.name.hash(state);
self.object_name.hash(state);
self.arguments.hash(state);
self.return_type.hash(state);
self.attributes.hash(state);
}
}
impl APIConverter<Method> for weedle::interface::OperationInterfaceMember<'_> {
fn convert(&self, ci: &mut ComponentInterface) -> Result<Method> {
if self.special.is_some() {

View File

@@ -45,7 +45,6 @@
//! ```
use anyhow::{bail, Result};
use uniffi_meta::Checksum;
use super::types::{Type, TypeIterator};
use super::{
@@ -59,7 +58,7 @@ use super::{APIConverter, ComponentInterface};
/// In the FFI these are represented as a byte buffer, which one side explicitly
/// serializes the data into and the other serializes it out of. So I guess they're
/// kind of like "pass by clone" values.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub struct Record {
pub(super) name: String,
pub(super) fields: Vec<Field>,
@@ -110,7 +109,7 @@ impl APIConverter<Record> for weedle::DictionaryDefinition<'_> {
}
// Represents an individual field on a Record.
#[derive(Debug, Clone, Checksum)]
#[derive(Debug, Clone, Hash)]
pub struct Field {
pub(super) name: String,
pub(super) type_: Type,

View File

@@ -25,7 +25,6 @@ use std::{collections::hash_map::Entry, collections::BTreeSet, collections::Hash
use anyhow::{bail, Result};
use heck::ToUpperCamelCase;
use uniffi_meta::Checksum;
use super::ffi::FFIType;
@@ -37,7 +36,7 @@ pub(super) use resolver::{resolve_builtin_type, TypeResolver};
/// Represents all the different high-level types that can be used in a component interface.
/// At this level we identify user-defined types by name, without knowing any details
/// of their internal structure apart from what type of thing they are (record, enum, etc).
#[derive(Debug, Clone, Eq, PartialEq, Checksum, Ord, PartialOrd)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
pub enum Type {
// Primitive types.
UInt8,

View File

@@ -8,7 +8,7 @@ use fs_err as fs;
use goblin::{
archive::Archive,
elf::Elf,
mach::{segment::Section, symbols, Mach, MachO, SingleArch},
mach::{segment::Section, symbols, Mach, MachO},
pe::PE,
Object,
};
@@ -76,10 +76,7 @@ pub fn extract_from_mach(mach: Mach<'_>, file_data: &[u8]) -> anyhow::Result<Vec
match mach {
Mach::Binary(macho) => extract_from_macho(macho, file_data),
// Multi-binary library, just extract the first one
Mach::Fat(multi_arch) => match multi_arch.get(0)? {
SingleArch::MachO(macho) => extract_from_macho(macho, file_data),
SingleArch::Archive(archive) => extract_from_archive(archive, file_data),
},
Mach::Fat(multi_arch) => extract_from_macho(multi_arch.get(0)?, file_data),
}
}

View File

@@ -1 +1 @@
{"files":{"Cargo.toml":"30736876caf953bd0040b6c0fc824744556bf52fe23d656c7d01442d4c180674","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"}
{"files":{"Cargo.toml":"bf9105f53978ecdccad9a75fc3645f97982d3c4162a5a9b49ab16554162b51c1","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"}

View File

@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "uniffi_build"
version = "0.21.1"
version = "0.21.0"
authors = ["Firefox Sync Team <sync-team@mozilla.com>"]
description = "a multi-language bindings generator for rust (build script helpers)"
homepage = "https://mozilla.github.io/uniffi-rs"
@@ -23,6 +23,7 @@ keywords = [
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
resolver = "2"
[dependencies.anyhow]
version = "1"
@@ -31,7 +32,7 @@ version = "1"
version = "1.0.8"
[dependencies.uniffi_bindgen]
version = "=0.21.1"
version = "=0.21.0"
optional = true
[features]

View File

@@ -1 +0,0 @@
{"files":{"Cargo.toml":"2ab3c60724c4c504297f8876bf0a8d1291f76a2fc46f5e83634aa147e89ffc71","src/lib.rs":"c68c69a1cf6a69e5fe78f7b069364a265c5bb6ce8c0abf0b5745eca01c79604a"},"package":"78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"}

View File

@@ -1,42 +0,0 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
name = "uniffi_checksum_derive"
version = "0.21.1"
authors = ["Firefox Sync Team <sync-team@mozilla.com>"]
description = "a multi-language bindings generator for rust (checksum custom derive)"
homepage = "https://mozilla.github.io/uniffi-rs"
documentation = "https://mozilla.github.io/uniffi-rs"
keywords = [
"ffi",
"bindgen",
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
[lib]
proc-macro = true
[dependencies.quote]
version = "1.0"
[dependencies.syn]
version = "1.0"
features = [
"derive",
"parsing",
]
[features]
default = []
nightly = []

View File

@@ -1,134 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#![cfg_attr(feature = "nightly", feature(proc_macro_expand))]
//! Custom derive for uniffi_meta::Checksum
use proc_macro::TokenStream;
use quote::{format_ident, quote};
use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, Fields, Index, Lit};
fn has_ignore_attribute(attrs: &[Attribute]) -> bool {
attrs.iter().any(|attr| {
if attr.path.is_ident("checksum_ignore") {
if !attr.tokens.is_empty() {
panic!("#[checksum_ignore] doesn't accept extra information");
}
true
} else {
false
}
})
}
#[proc_macro_derive(Checksum, attributes(checksum_ignore))]
pub fn checksum_derive(input: TokenStream) -> TokenStream {
let input: DeriveInput = parse_macro_input!(input);
let name = input.ident;
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
let code = match input.data {
Data::Enum(enum_)
if enum_.variants.len() == 1
&& enum_
.variants
.iter()
.all(|variant| matches!(variant.fields, Fields::Unit)) =>
{
quote!()
}
Data::Enum(enum_) => {
let mut next_discriminant = 0u64;
let match_inner = enum_.variants.iter().map(|variant| {
let ident = &variant.ident;
if has_ignore_attribute(&variant.attrs) {
panic!("#[checksum_ignore] is not supported in enums");
}
match &variant.discriminant {
Some((_, Expr::Lit(ExprLit { lit: Lit::Int(value), .. }))) => {
next_discriminant = value.base10_parse::<u64>().unwrap();
}
Some(_) => {
panic!("#[derive(Checksum)] doesn't support non-numeric explicit discriminants in enums");
}
None => {}
}
let discriminant = quote! { state.write(&#next_discriminant.to_le_bytes()) };
next_discriminant += 1;
match &variant.fields {
Fields::Unnamed(fields) => {
let field_idents = fields
.unnamed
.iter()
.enumerate()
.map(|(num, _)| format_ident!("__self_{}", num));
let field_stmts = field_idents
.clone()
.map(|ident| quote! { Checksum::checksum(#ident, state); });
quote! {
Self::#ident(#(#field_idents,)*) => {
#discriminant;
#(#field_stmts)*
}
}
}
Fields::Named(fields) => {
let field_idents = fields
.named
.iter()
.map(|field| field.ident.as_ref().unwrap());
let field_stmts = field_idents
.clone()
.map(|ident| quote! { Checksum::checksum(#ident, state); });
quote! {
Self::#ident { #(#field_idents,)* } => {
#discriminant;
#(#field_stmts)*
}
}
}
Fields::Unit => quote! { Self::#ident => #discriminant, },
}
});
quote! {
match self {
#(#match_inner)*
}
}
}
Data::Struct(struct_) => {
let stmts = struct_
.fields
.iter()
.enumerate()
.filter_map(|(num, field)| {
(!has_ignore_attribute(&field.attrs)).then(|| match field.ident.as_ref() {
Some(ident) => quote! { Checksum::checksum(&self.#ident, state); },
None => {
let i = Index::from(num);
quote! { Checksum::checksum(&self.#i, state); }
}
})
});
quote! {
#(#stmts)*
}
}
Data::Union(_) => {
panic!("#[derive(Checksum)] is not supported for unions");
}
};
quote! {
#[automatically_derived]
impl #impl_generics Checksum for #name #ty_generics #where_clause {
fn checksum<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
#code
}
}
}
.into()
}

View File

@@ -1 +1 @@
{"files":{"Cargo.toml":"6511b493b676ac3941d70477c91abec62642c3c9aab088ecdf4f733eef3f1faa","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"}
{"files":{"Cargo.toml":"55f7e114dd34b0c60b58890120f8707601a5401e9d49d42a239b03da2e660d4f","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"}

View File

@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "uniffi_macros"
version = "0.21.1"
version = "0.21.0"
authors = ["Firefox Sync Team <sync-team@mozilla.com>"]
description = "a multi-language bindings generator for rust (convenience macros)"
homepage = "https://mozilla.github.io/uniffi-rs"
@@ -23,6 +23,7 @@ keywords = [
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
resolver = "2"
[lib]
proc-macro = true
@@ -59,10 +60,10 @@ features = [
version = "0.5.9"
[dependencies.uniffi_build]
version = "=0.21.1"
version = "=0.21.0"
[dependencies.uniffi_meta]
version = "=0.21.1"
version = "=0.21.0"
[features]
builtin-bindgen = ["uniffi_build/builtin-bindgen"]

View File

@@ -1 +1 @@
{"files":{"Cargo.toml":"4c34032ec5fadf8b996c671425d5afa38e0e5c223ab0b2ed3b44099fb78157d3","src/lib.rs":"a9854421f120e1c4a9d7d36bb006a4c5e7d2e054564f95aa9b6956e7ebb348fd"},"package":"729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"}
{"files":{"Cargo.toml":"4a474782b3acac7e99435c0cfc6cd4790817ee5c15980b10dc927d95795b977f","src/lib.rs":"dc4c91763c01e8c09ef55cdb103bc02c7aba71c5660ba88f776a8a03a747d6e8"},"package":"cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"}

View File

@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "uniffi_meta"
version = "0.21.1"
version = "0.21.0"
description = "uniffi_meta"
homepage = "https://mozilla.github.io/uniffi-rs"
keywords = [
@@ -21,13 +21,8 @@ keywords = [
]
license = "MPL-2.0"
repository = "https://github.com/mozilla/uniffi-rs"
resolver = "2"
[dependencies.serde]
version = "1.0.136"
features = ["derive"]
[dependencies.siphasher]
version = "0.3"
[dependencies.uniffi_checksum_derive]
version = "0.21.0"

View File

@@ -2,84 +2,14 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use std::hash::Hasher;
pub use uniffi_checksum_derive::Checksum;
use std::{
collections::hash_map::DefaultHasher,
hash::{Hash, Hasher},
};
use serde::{Deserialize, Serialize};
/// Similar to std::hash::Hash.
///
/// Implementations of this trait are expected to update the hasher state in
/// the same way across platforms. #[derive(Checksum)] will do the right thing.
pub trait Checksum {
fn checksum<H: Hasher>(&self, state: &mut H);
}
impl Checksum for bool {
fn checksum<H: Hasher>(&self, state: &mut H) {
state.write_u8(*self as u8);
}
}
impl Checksum for u64 {
fn checksum<H: Hasher>(&self, state: &mut H) {
state.write(&self.to_le_bytes());
}
}
impl Checksum for i64 {
fn checksum<H: Hasher>(&self, state: &mut H) {
state.write(&self.to_le_bytes());
}
}
impl<T: Checksum> Checksum for Box<T> {
fn checksum<H: Hasher>(&self, state: &mut H) {
(**self).checksum(state)
}
}
impl<T: Checksum> Checksum for [T] {
fn checksum<H: Hasher>(&self, state: &mut H) {
state.write(&(self.len() as u64).to_le_bytes());
for item in self {
Checksum::checksum(item, state);
}
}
}
impl<T: Checksum> Checksum for Vec<T> {
fn checksum<H: Hasher>(&self, state: &mut H) {
Checksum::checksum(&**self, state);
}
}
impl<T: Checksum> Checksum for Option<T> {
fn checksum<H: Hasher>(&self, state: &mut H) {
match self {
None => state.write(&0u64.to_le_bytes()),
Some(value) => {
state.write(&1u64.to_le_bytes());
Checksum::checksum(value, state)
}
}
}
}
impl Checksum for str {
fn checksum<H: Hasher>(&self, state: &mut H) {
state.write(self.as_bytes());
state.write_u8(0xff);
}
}
impl Checksum for String {
fn checksum<H: Hasher>(&self, state: &mut H) {
(**self).checksum(state)
}
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct FnMetadata {
pub module_path: Vec<String>,
pub name: String,
@@ -93,7 +23,7 @@ impl FnMetadata {
}
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct MethodMetadata {
pub module_path: Vec<String>,
pub self_name: String,
@@ -109,14 +39,14 @@ impl MethodMetadata {
}
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct FnParamMetadata {
pub name: String,
#[serde(rename = "type")]
pub ty: Type,
}
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
pub enum Type {
U8,
U16,
@@ -148,21 +78,21 @@ pub enum Type {
},
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct RecordMetadata {
pub module_path: Vec<String>,
pub name: String,
pub fields: Vec<FieldMetadata>,
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct FieldMetadata {
pub name: String,
#[serde(rename = "type")]
pub ty: Type,
}
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub struct ObjectMetadata {
pub module_path: Vec<String>,
pub name: String,
@@ -178,13 +108,13 @@ impl ObjectMetadata {
}
}
/// Returns the last 16 bits of the value's hash as computed with [`SipHasher13`].
/// Returns the last 16 bits of the value's hash as computed with [`DefaultHasher`].
///
/// To be used as a checksum of FFI symbols, as a safeguard against different UniFFI versions being
/// used for scaffolding and bindings generation.
pub fn checksum<T: Checksum>(val: &T) -> u16 {
let mut hasher = siphasher::sip::SipHasher13::new();
val.checksum(&mut hasher);
pub fn checksum<T: Hash>(val: &T) -> u16 {
let mut hasher = DefaultHasher::new();
val.hash(&mut hasher);
(hasher.finish() & 0x000000000000FFFF) as u16
}
@@ -194,7 +124,7 @@ pub fn fn_ffi_symbol_name(mod_path: &[String], name: &str, checksum: u16) -> Str
}
/// Enum covering all the possible metadata types
#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
pub enum Metadata {
Func(FnMetadata),
Method(MethodMetadata),

View File

@@ -328,7 +328,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
7, // tabs:tabs_1d6_TabsBridgedEngine_last_sync
7, // tabs:tabs_edc9_TabsBridgedEngine_last_sync
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -343,7 +343,7 @@ class TabsBridgedEngine {
const functionCall = () => {
FfiConverterI64.checkType("lastSync", lastSync);
return UniFFIScaffolding.callAsync(
8, // tabs:tabs_1d6_TabsBridgedEngine_set_last_sync
8, // tabs:tabs_edc9_TabsBridgedEngine_set_last_sync
FfiConverterTypeTabsBridgedEngine.lower(this),
FfiConverterI64.lower(lastSync),
)
@@ -358,7 +358,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
9, // tabs:tabs_1d6_TabsBridgedEngine_sync_id
9, // tabs:tabs_edc9_TabsBridgedEngine_sync_id
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -372,7 +372,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
10, // tabs:tabs_1d6_TabsBridgedEngine_reset_sync_id
10, // tabs:tabs_edc9_TabsBridgedEngine_reset_sync_id
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -387,7 +387,7 @@ class TabsBridgedEngine {
const functionCall = () => {
FfiConverterString.checkType("newSyncId", newSyncId);
return UniFFIScaffolding.callAsync(
11, // tabs:tabs_1d6_TabsBridgedEngine_ensure_current_sync_id
11, // tabs:tabs_edc9_TabsBridgedEngine_ensure_current_sync_id
FfiConverterTypeTabsBridgedEngine.lower(this),
FfiConverterString.lower(newSyncId),
)
@@ -403,7 +403,7 @@ class TabsBridgedEngine {
const functionCall = () => {
FfiConverterString.checkType("clientData", clientData);
return UniFFIScaffolding.callAsync(
12, // tabs:tabs_1d6_TabsBridgedEngine_prepare_for_sync
12, // tabs:tabs_edc9_TabsBridgedEngine_prepare_for_sync
FfiConverterTypeTabsBridgedEngine.lower(this),
FfiConverterString.lower(clientData),
)
@@ -418,7 +418,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
13, // tabs:tabs_1d6_TabsBridgedEngine_sync_started
13, // tabs:tabs_edc9_TabsBridgedEngine_sync_started
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -433,7 +433,7 @@ class TabsBridgedEngine {
const functionCall = () => {
FfiConverterSequencestring.checkType("incomingEnvelopesAsJson", incomingEnvelopesAsJson);
return UniFFIScaffolding.callAsync(
14, // tabs:tabs_1d6_TabsBridgedEngine_store_incoming
14, // tabs:tabs_edc9_TabsBridgedEngine_store_incoming
FfiConverterTypeTabsBridgedEngine.lower(this),
FfiConverterSequencestring.lower(incomingEnvelopesAsJson),
)
@@ -448,7 +448,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
15, // tabs:tabs_1d6_TabsBridgedEngine_apply
15, // tabs:tabs_edc9_TabsBridgedEngine_apply
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -464,7 +464,7 @@ class TabsBridgedEngine {
FfiConverterI64.checkType("newTimestamp", newTimestamp);
FfiConverterSequenceTypeTabsGuid.checkType("uploadedIds", uploadedIds);
return UniFFIScaffolding.callAsync(
16, // tabs:tabs_1d6_TabsBridgedEngine_set_uploaded
16, // tabs:tabs_edc9_TabsBridgedEngine_set_uploaded
FfiConverterTypeTabsBridgedEngine.lower(this),
FfiConverterI64.lower(newTimestamp),
FfiConverterSequenceTypeTabsGuid.lower(uploadedIds),
@@ -480,7 +480,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
17, // tabs:tabs_1d6_TabsBridgedEngine_sync_finished
17, // tabs:tabs_edc9_TabsBridgedEngine_sync_finished
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -494,7 +494,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
18, // tabs:tabs_1d6_TabsBridgedEngine_reset
18, // tabs:tabs_edc9_TabsBridgedEngine_reset
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -508,7 +508,7 @@ class TabsBridgedEngine {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
19, // tabs:tabs_1d6_TabsBridgedEngine_wipe
19, // tabs:tabs_edc9_TabsBridgedEngine_wipe
FfiConverterTypeTabsBridgedEngine.lower(this),
)
}
@@ -574,7 +574,7 @@ class TabsStore {
const functionCall = () => {
FfiConverterString.checkType("path", path);
return UniFFIScaffolding.callAsync(
0, // tabs:tabs_1d6_TabsStore_new
0, // tabs:tabs_edc9_TabsStore_new
FfiConverterString.lower(path),
)
}
@@ -588,7 +588,7 @@ class TabsStore {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
1, // tabs:tabs_1d6_TabsStore_get_all
1, // tabs:tabs_edc9_TabsStore_get_all
FfiConverterTypeTabsStore.lower(this),
)
}
@@ -603,7 +603,7 @@ class TabsStore {
const functionCall = () => {
FfiConverterSequenceTypeRemoteTabRecord.checkType("remoteTabs", remoteTabs);
return UniFFIScaffolding.callAsync(
2, // tabs:tabs_1d6_TabsStore_set_local_tabs
2, // tabs:tabs_edc9_TabsStore_set_local_tabs
FfiConverterTypeTabsStore.lower(this),
FfiConverterSequenceTypeRemoteTabRecord.lower(remoteTabs),
)
@@ -618,7 +618,7 @@ class TabsStore {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
3, // tabs:tabs_1d6_TabsStore_register_with_sync_manager
3, // tabs:tabs_edc9_TabsStore_register_with_sync_manager
FfiConverterTypeTabsStore.lower(this),
)
}
@@ -632,7 +632,7 @@ class TabsStore {
const liftError = (data) => FfiConverterTypeTabsApiError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
4, // tabs:tabs_1d6_TabsStore_reset
4, // tabs:tabs_edc9_TabsStore_reset
FfiConverterTypeTabsStore.lower(this),
)
}
@@ -651,7 +651,7 @@ class TabsStore {
FfiConverterString.checkType("tokenserverUrl", tokenserverUrl);
FfiConverterString.checkType("localId", localId);
return UniFFIScaffolding.callAsync(
5, // tabs:tabs_1d6_TabsStore_sync
5, // tabs:tabs_edc9_TabsStore_sync
FfiConverterTypeTabsStore.lower(this),
FfiConverterString.lower(keyId),
FfiConverterString.lower(accessToken),
@@ -670,7 +670,7 @@ class TabsStore {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
6, // tabs:tabs_1d6_TabsStore_bridged_engine
6, // tabs:tabs_edc9_TabsStore_bridged_engine
FfiConverterTypeTabsStore.lower(this),
)
}

View File

@@ -338,7 +338,7 @@ function add(a,b) {
FfiConverterU64.checkType("a", a);
FfiConverterU64.checkType("b", b);
return UniFFIScaffolding.callAsync(
22, // arithmetic:arithmetic_cd72_add
22, // arithmetic:arithmetic_906c_add
FfiConverterU64.lower(a),
FfiConverterU64.lower(b),
)
@@ -359,7 +359,7 @@ function sub(a,b) {
FfiConverterU64.checkType("a", a);
FfiConverterU64.checkType("b", b);
return UniFFIScaffolding.callAsync(
23, // arithmetic:arithmetic_cd72_sub
23, // arithmetic:arithmetic_906c_sub
FfiConverterU64.lower(a),
FfiConverterU64.lower(b),
)
@@ -380,7 +380,7 @@ function div(dividend,divisor) {
FfiConverterU64.checkType("dividend", dividend);
FfiConverterU64.checkType("divisor", divisor);
return UniFFIScaffolding.callAsync(
24, // arithmetic:arithmetic_cd72_div
24, // arithmetic:arithmetic_906c_div
FfiConverterU64.lower(dividend),
FfiConverterU64.lower(divisor),
)
@@ -401,7 +401,7 @@ function equal(a,b) {
FfiConverterU64.checkType("a", a);
FfiConverterU64.checkType("b", b);
return UniFFIScaffolding.callAsync(
25, // arithmetic:arithmetic_cd72_equal
25, // arithmetic:arithmetic_906c_equal
FfiConverterU64.lower(a),
FfiConverterU64.lower(b),
)

View File

@@ -422,7 +422,7 @@ function getCustomTypesDemo(demo) {
const functionCall = () => {
FfiConverterOptionalTypeCustomTypesDemo.checkType("demo", demo);
return UniFFIScaffolding.callAsync(
107, // custom_types:custom_types_1cc4_get_custom_types_demo
107, // custom_types:custom_types_8ecd_get_custom_types_demo
FfiConverterOptionalTypeCustomTypesDemo.lower(demo),
)
}

View File

@@ -329,7 +329,7 @@ function gradient(value) {
const functionCall = () => {
FfiConverterOptionalTypeLine.checkType("value", value);
return UniFFIScaffolding.callAsync(
108, // external_types:external_types_ec59_gradient
108, // external_types:external_types_54cc_gradient
FfiConverterOptionalTypeLine.lower(value),
)
}

View File

@@ -411,7 +411,7 @@ function gradient(ln) {
const functionCall = () => {
FfiConverterTypeLine.checkType("ln", ln);
return UniFFIScaffolding.callAsync(
20, // geometry:geometry_4b55_gradient
20, // geometry:geometry_1cce_gradient
FfiConverterTypeLine.lower(ln),
)
}
@@ -431,7 +431,7 @@ function intersection(ln1,ln2) {
FfiConverterTypeLine.checkType("ln1", ln1);
FfiConverterTypeLine.checkType("ln2", ln2);
return UniFFIScaffolding.callAsync(
21, // geometry:geometry_4b55_intersection
21, // geometry:geometry_1cce_intersection
FfiConverterTypeLine.lower(ln1),
FfiConverterTypeLine.lower(ln2),
)

View File

@@ -631,7 +631,7 @@ class Optionneur {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
55, // rondpoint:rondpoint_640b_Optionneur_new
55, // rondpoint:rondpoint_c6ef_Optionneur_new
)
}
try {
@@ -645,7 +645,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterBool.checkType("value", value);
return UniFFIScaffolding.callAsync(
56, // rondpoint:rondpoint_640b_Optionneur_sinon_boolean
56, // rondpoint:rondpoint_c6ef_Optionneur_sinon_boolean
FfiConverterTypeOptionneur.lower(this),
FfiConverterBool.lower(value),
)
@@ -661,7 +661,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterString.checkType("value", value);
return UniFFIScaffolding.callAsync(
57, // rondpoint:rondpoint_640b_Optionneur_sinon_string
57, // rondpoint:rondpoint_c6ef_Optionneur_sinon_string
FfiConverterTypeOptionneur.lower(this),
FfiConverterString.lower(value),
)
@@ -677,7 +677,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterSequencestring.checkType("value", value);
return UniFFIScaffolding.callAsync(
58, // rondpoint:rondpoint_640b_Optionneur_sinon_sequence
58, // rondpoint:rondpoint_c6ef_Optionneur_sinon_sequence
FfiConverterTypeOptionneur.lower(this),
FfiConverterSequencestring.lower(value),
)
@@ -693,7 +693,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterOptionalstring.checkType("value", value);
return UniFFIScaffolding.callAsync(
59, // rondpoint:rondpoint_640b_Optionneur_sinon_null
59, // rondpoint:rondpoint_c6ef_Optionneur_sinon_null
FfiConverterTypeOptionneur.lower(this),
FfiConverterOptionalstring.lower(value),
)
@@ -709,7 +709,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterOptionali32.checkType("value", value);
return UniFFIScaffolding.callAsync(
60, // rondpoint:rondpoint_640b_Optionneur_sinon_zero
60, // rondpoint:rondpoint_c6ef_Optionneur_sinon_zero
FfiConverterTypeOptionneur.lower(this),
FfiConverterOptionali32.lower(value),
)
@@ -725,7 +725,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU8.checkType("value", value);
return UniFFIScaffolding.callAsync(
61, // rondpoint:rondpoint_640b_Optionneur_sinon_u8_dec
61, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u8_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterU8.lower(value),
)
@@ -741,7 +741,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI8.checkType("value", value);
return UniFFIScaffolding.callAsync(
62, // rondpoint:rondpoint_640b_Optionneur_sinon_i8_dec
62, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i8_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterI8.lower(value),
)
@@ -757,7 +757,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU16.checkType("value", value);
return UniFFIScaffolding.callAsync(
63, // rondpoint:rondpoint_640b_Optionneur_sinon_u16_dec
63, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u16_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterU16.lower(value),
)
@@ -773,7 +773,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI16.checkType("value", value);
return UniFFIScaffolding.callAsync(
64, // rondpoint:rondpoint_640b_Optionneur_sinon_i16_dec
64, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i16_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterI16.lower(value),
)
@@ -789,7 +789,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU32.checkType("value", value);
return UniFFIScaffolding.callAsync(
65, // rondpoint:rondpoint_640b_Optionneur_sinon_u32_dec
65, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u32_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterU32.lower(value),
)
@@ -805,7 +805,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI32.checkType("value", value);
return UniFFIScaffolding.callAsync(
66, // rondpoint:rondpoint_640b_Optionneur_sinon_i32_dec
66, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i32_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterI32.lower(value),
)
@@ -821,7 +821,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU64.checkType("value", value);
return UniFFIScaffolding.callAsync(
67, // rondpoint:rondpoint_640b_Optionneur_sinon_u64_dec
67, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u64_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterU64.lower(value),
)
@@ -837,7 +837,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI64.checkType("value", value);
return UniFFIScaffolding.callAsync(
68, // rondpoint:rondpoint_640b_Optionneur_sinon_i64_dec
68, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i64_dec
FfiConverterTypeOptionneur.lower(this),
FfiConverterI64.lower(value),
)
@@ -853,7 +853,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU8.checkType("value", value);
return UniFFIScaffolding.callAsync(
69, // rondpoint:rondpoint_640b_Optionneur_sinon_u8_hex
69, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u8_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterU8.lower(value),
)
@@ -869,7 +869,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI8.checkType("value", value);
return UniFFIScaffolding.callAsync(
70, // rondpoint:rondpoint_640b_Optionneur_sinon_i8_hex
70, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i8_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterI8.lower(value),
)
@@ -885,7 +885,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU16.checkType("value", value);
return UniFFIScaffolding.callAsync(
71, // rondpoint:rondpoint_640b_Optionneur_sinon_u16_hex
71, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u16_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterU16.lower(value),
)
@@ -901,7 +901,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI16.checkType("value", value);
return UniFFIScaffolding.callAsync(
72, // rondpoint:rondpoint_640b_Optionneur_sinon_i16_hex
72, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i16_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterI16.lower(value),
)
@@ -917,7 +917,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU32.checkType("value", value);
return UniFFIScaffolding.callAsync(
73, // rondpoint:rondpoint_640b_Optionneur_sinon_u32_hex
73, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u32_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterU32.lower(value),
)
@@ -933,7 +933,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI32.checkType("value", value);
return UniFFIScaffolding.callAsync(
74, // rondpoint:rondpoint_640b_Optionneur_sinon_i32_hex
74, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i32_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterI32.lower(value),
)
@@ -949,7 +949,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU64.checkType("value", value);
return UniFFIScaffolding.callAsync(
75, // rondpoint:rondpoint_640b_Optionneur_sinon_u64_hex
75, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u64_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterU64.lower(value),
)
@@ -965,7 +965,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterI64.checkType("value", value);
return UniFFIScaffolding.callAsync(
76, // rondpoint:rondpoint_640b_Optionneur_sinon_i64_hex
76, // rondpoint:rondpoint_c6ef_Optionneur_sinon_i64_hex
FfiConverterTypeOptionneur.lower(this),
FfiConverterI64.lower(value),
)
@@ -981,7 +981,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterU32.checkType("value", value);
return UniFFIScaffolding.callAsync(
77, // rondpoint:rondpoint_640b_Optionneur_sinon_u32_oct
77, // rondpoint:rondpoint_c6ef_Optionneur_sinon_u32_oct
FfiConverterTypeOptionneur.lower(this),
FfiConverterU32.lower(value),
)
@@ -997,7 +997,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterF32.checkType("value", value);
return UniFFIScaffolding.callAsync(
78, // rondpoint:rondpoint_640b_Optionneur_sinon_f32
78, // rondpoint:rondpoint_c6ef_Optionneur_sinon_f32
FfiConverterTypeOptionneur.lower(this),
FfiConverterF32.lower(value),
)
@@ -1013,7 +1013,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterF64.checkType("value", value);
return UniFFIScaffolding.callAsync(
79, // rondpoint:rondpoint_640b_Optionneur_sinon_f64
79, // rondpoint:rondpoint_c6ef_Optionneur_sinon_f64
FfiConverterTypeOptionneur.lower(this),
FfiConverterF64.lower(value),
)
@@ -1029,7 +1029,7 @@ class Optionneur {
const functionCall = () => {
FfiConverterTypeEnumeration.checkType("value", value);
return UniFFIScaffolding.callAsync(
80, // rondpoint:rondpoint_640b_Optionneur_sinon_enum
80, // rondpoint:rondpoint_c6ef_Optionneur_sinon_enum
FfiConverterTypeOptionneur.lower(this),
FfiConverterTypeEnumeration.lower(value),
)
@@ -1095,7 +1095,7 @@ class Retourneur {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
26, // rondpoint:rondpoint_640b_Retourneur_new
26, // rondpoint:rondpoint_c6ef_Retourneur_new
)
}
try {
@@ -1109,7 +1109,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterI8.checkType("value", value);
return UniFFIScaffolding.callAsync(
27, // rondpoint:rondpoint_640b_Retourneur_identique_i8
27, // rondpoint:rondpoint_c6ef_Retourneur_identique_i8
FfiConverterTypeRetourneur.lower(this),
FfiConverterI8.lower(value),
)
@@ -1125,7 +1125,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterU8.checkType("value", value);
return UniFFIScaffolding.callAsync(
28, // rondpoint:rondpoint_640b_Retourneur_identique_u8
28, // rondpoint:rondpoint_c6ef_Retourneur_identique_u8
FfiConverterTypeRetourneur.lower(this),
FfiConverterU8.lower(value),
)
@@ -1141,7 +1141,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterI16.checkType("value", value);
return UniFFIScaffolding.callAsync(
29, // rondpoint:rondpoint_640b_Retourneur_identique_i16
29, // rondpoint:rondpoint_c6ef_Retourneur_identique_i16
FfiConverterTypeRetourneur.lower(this),
FfiConverterI16.lower(value),
)
@@ -1157,7 +1157,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterU16.checkType("value", value);
return UniFFIScaffolding.callAsync(
30, // rondpoint:rondpoint_640b_Retourneur_identique_u16
30, // rondpoint:rondpoint_c6ef_Retourneur_identique_u16
FfiConverterTypeRetourneur.lower(this),
FfiConverterU16.lower(value),
)
@@ -1173,7 +1173,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterI32.checkType("value", value);
return UniFFIScaffolding.callAsync(
31, // rondpoint:rondpoint_640b_Retourneur_identique_i32
31, // rondpoint:rondpoint_c6ef_Retourneur_identique_i32
FfiConverterTypeRetourneur.lower(this),
FfiConverterI32.lower(value),
)
@@ -1189,7 +1189,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterU32.checkType("value", value);
return UniFFIScaffolding.callAsync(
32, // rondpoint:rondpoint_640b_Retourneur_identique_u32
32, // rondpoint:rondpoint_c6ef_Retourneur_identique_u32
FfiConverterTypeRetourneur.lower(this),
FfiConverterU32.lower(value),
)
@@ -1205,7 +1205,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterI64.checkType("value", value);
return UniFFIScaffolding.callAsync(
33, // rondpoint:rondpoint_640b_Retourneur_identique_i64
33, // rondpoint:rondpoint_c6ef_Retourneur_identique_i64
FfiConverterTypeRetourneur.lower(this),
FfiConverterI64.lower(value),
)
@@ -1221,7 +1221,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterU64.checkType("value", value);
return UniFFIScaffolding.callAsync(
34, // rondpoint:rondpoint_640b_Retourneur_identique_u64
34, // rondpoint:rondpoint_c6ef_Retourneur_identique_u64
FfiConverterTypeRetourneur.lower(this),
FfiConverterU64.lower(value),
)
@@ -1237,7 +1237,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterF32.checkType("value", value);
return UniFFIScaffolding.callAsync(
35, // rondpoint:rondpoint_640b_Retourneur_identique_float
35, // rondpoint:rondpoint_c6ef_Retourneur_identique_float
FfiConverterTypeRetourneur.lower(this),
FfiConverterF32.lower(value),
)
@@ -1253,7 +1253,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterF64.checkType("value", value);
return UniFFIScaffolding.callAsync(
36, // rondpoint:rondpoint_640b_Retourneur_identique_double
36, // rondpoint:rondpoint_c6ef_Retourneur_identique_double
FfiConverterTypeRetourneur.lower(this),
FfiConverterF64.lower(value),
)
@@ -1269,7 +1269,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterBool.checkType("value", value);
return UniFFIScaffolding.callAsync(
37, // rondpoint:rondpoint_640b_Retourneur_identique_boolean
37, // rondpoint:rondpoint_c6ef_Retourneur_identique_boolean
FfiConverterTypeRetourneur.lower(this),
FfiConverterBool.lower(value),
)
@@ -1285,7 +1285,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterString.checkType("value", value);
return UniFFIScaffolding.callAsync(
38, // rondpoint:rondpoint_640b_Retourneur_identique_string
38, // rondpoint:rondpoint_c6ef_Retourneur_identique_string
FfiConverterTypeRetourneur.lower(this),
FfiConverterString.lower(value),
)
@@ -1301,7 +1301,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterTypeDictionnaireNombresSignes.checkType("value", value);
return UniFFIScaffolding.callAsync(
39, // rondpoint:rondpoint_640b_Retourneur_identique_nombres_signes
39, // rondpoint:rondpoint_c6ef_Retourneur_identique_nombres_signes
FfiConverterTypeRetourneur.lower(this),
FfiConverterTypeDictionnaireNombresSignes.lower(value),
)
@@ -1317,7 +1317,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterTypeDictionnaireNombres.checkType("value", value);
return UniFFIScaffolding.callAsync(
40, // rondpoint:rondpoint_640b_Retourneur_identique_nombres
40, // rondpoint:rondpoint_c6ef_Retourneur_identique_nombres
FfiConverterTypeRetourneur.lower(this),
FfiConverterTypeDictionnaireNombres.lower(value),
)
@@ -1333,7 +1333,7 @@ class Retourneur {
const functionCall = () => {
FfiConverterTypeOptionneurDictionnaire.checkType("value", value);
return UniFFIScaffolding.callAsync(
41, // rondpoint:rondpoint_640b_Retourneur_identique_optionneur_dictionnaire
41, // rondpoint:rondpoint_c6ef_Retourneur_identique_optionneur_dictionnaire
FfiConverterTypeRetourneur.lower(this),
FfiConverterTypeOptionneurDictionnaire.lower(value),
)
@@ -1399,7 +1399,7 @@ class Stringifier {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
42, // rondpoint:rondpoint_640b_Stringifier_new
42, // rondpoint:rondpoint_c6ef_Stringifier_new
)
}
try {
@@ -1413,7 +1413,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterString.checkType("value", value);
return UniFFIScaffolding.callAsync(
43, // rondpoint:rondpoint_640b_Stringifier_well_known_string
43, // rondpoint:rondpoint_c6ef_Stringifier_well_known_string
FfiConverterTypeStringifier.lower(this),
FfiConverterString.lower(value),
)
@@ -1429,7 +1429,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterI8.checkType("value", value);
return UniFFIScaffolding.callAsync(
44, // rondpoint:rondpoint_640b_Stringifier_to_string_i8
44, // rondpoint:rondpoint_c6ef_Stringifier_to_string_i8
FfiConverterTypeStringifier.lower(this),
FfiConverterI8.lower(value),
)
@@ -1445,7 +1445,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterU8.checkType("value", value);
return UniFFIScaffolding.callAsync(
45, // rondpoint:rondpoint_640b_Stringifier_to_string_u8
45, // rondpoint:rondpoint_c6ef_Stringifier_to_string_u8
FfiConverterTypeStringifier.lower(this),
FfiConverterU8.lower(value),
)
@@ -1461,7 +1461,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterI16.checkType("value", value);
return UniFFIScaffolding.callAsync(
46, // rondpoint:rondpoint_640b_Stringifier_to_string_i16
46, // rondpoint:rondpoint_c6ef_Stringifier_to_string_i16
FfiConverterTypeStringifier.lower(this),
FfiConverterI16.lower(value),
)
@@ -1477,7 +1477,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterU16.checkType("value", value);
return UniFFIScaffolding.callAsync(
47, // rondpoint:rondpoint_640b_Stringifier_to_string_u16
47, // rondpoint:rondpoint_c6ef_Stringifier_to_string_u16
FfiConverterTypeStringifier.lower(this),
FfiConverterU16.lower(value),
)
@@ -1493,7 +1493,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterI32.checkType("value", value);
return UniFFIScaffolding.callAsync(
48, // rondpoint:rondpoint_640b_Stringifier_to_string_i32
48, // rondpoint:rondpoint_c6ef_Stringifier_to_string_i32
FfiConverterTypeStringifier.lower(this),
FfiConverterI32.lower(value),
)
@@ -1509,7 +1509,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterU32.checkType("value", value);
return UniFFIScaffolding.callAsync(
49, // rondpoint:rondpoint_640b_Stringifier_to_string_u32
49, // rondpoint:rondpoint_c6ef_Stringifier_to_string_u32
FfiConverterTypeStringifier.lower(this),
FfiConverterU32.lower(value),
)
@@ -1525,7 +1525,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterI64.checkType("value", value);
return UniFFIScaffolding.callAsync(
50, // rondpoint:rondpoint_640b_Stringifier_to_string_i64
50, // rondpoint:rondpoint_c6ef_Stringifier_to_string_i64
FfiConverterTypeStringifier.lower(this),
FfiConverterI64.lower(value),
)
@@ -1541,7 +1541,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterU64.checkType("value", value);
return UniFFIScaffolding.callAsync(
51, // rondpoint:rondpoint_640b_Stringifier_to_string_u64
51, // rondpoint:rondpoint_c6ef_Stringifier_to_string_u64
FfiConverterTypeStringifier.lower(this),
FfiConverterU64.lower(value),
)
@@ -1557,7 +1557,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterF32.checkType("value", value);
return UniFFIScaffolding.callAsync(
52, // rondpoint:rondpoint_640b_Stringifier_to_string_float
52, // rondpoint:rondpoint_c6ef_Stringifier_to_string_float
FfiConverterTypeStringifier.lower(this),
FfiConverterF32.lower(value),
)
@@ -1573,7 +1573,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterF64.checkType("value", value);
return UniFFIScaffolding.callAsync(
53, // rondpoint:rondpoint_640b_Stringifier_to_string_double
53, // rondpoint:rondpoint_c6ef_Stringifier_to_string_double
FfiConverterTypeStringifier.lower(this),
FfiConverterF64.lower(value),
)
@@ -1589,7 +1589,7 @@ class Stringifier {
const functionCall = () => {
FfiConverterBool.checkType("value", value);
return UniFFIScaffolding.callAsync(
54, // rondpoint:rondpoint_640b_Stringifier_to_string_boolean
54, // rondpoint:rondpoint_c6ef_Stringifier_to_string_boolean
FfiConverterTypeStringifier.lower(this),
FfiConverterBool.lower(value),
)
@@ -2375,7 +2375,7 @@ function copieDictionnaire(d) {
const functionCall = () => {
FfiConverterTypeDictionnaire.checkType("d", d);
return UniFFIScaffolding.callAsync(
81, // rondpoint:rondpoint_640b_copie_dictionnaire
81, // rondpoint:rondpoint_c6ef_copie_dictionnaire
FfiConverterTypeDictionnaire.lower(d),
)
}
@@ -2394,7 +2394,7 @@ function copieEnumeration(e) {
const functionCall = () => {
FfiConverterTypeEnumeration.checkType("e", e);
return UniFFIScaffolding.callAsync(
82, // rondpoint:rondpoint_640b_copie_enumeration
82, // rondpoint:rondpoint_c6ef_copie_enumeration
FfiConverterTypeEnumeration.lower(e),
)
}
@@ -2413,7 +2413,7 @@ function copieEnumerations(e) {
const functionCall = () => {
FfiConverterSequenceTypeEnumeration.checkType("e", e);
return UniFFIScaffolding.callAsync(
83, // rondpoint:rondpoint_640b_copie_enumerations
83, // rondpoint:rondpoint_c6ef_copie_enumerations
FfiConverterSequenceTypeEnumeration.lower(e),
)
}
@@ -2432,7 +2432,7 @@ function copieCarte(c) {
const functionCall = () => {
FfiConverterMapStringTypeEnumerationAvecDonnees.checkType("c", c);
return UniFFIScaffolding.callAsync(
84, // rondpoint:rondpoint_640b_copie_carte
84, // rondpoint:rondpoint_c6ef_copie_carte
FfiConverterMapStringTypeEnumerationAvecDonnees.lower(c),
)
}
@@ -2451,7 +2451,7 @@ function switcheroo(b) {
const functionCall = () => {
FfiConverterBool.checkType("b", b);
return UniFFIScaffolding.callAsync(
85, // rondpoint:rondpoint_640b_switcheroo
85, // rondpoint:rondpoint_c6ef_switcheroo
FfiConverterBool.lower(b),
)
}

View File

@@ -309,7 +309,7 @@ class Sprite {
const functionCall = () => {
FfiConverterOptionalTypePoint.checkType("initialPosition", initialPosition);
return UniFFIScaffolding.callAsync(
86, // sprites:sprites_fec0_Sprite_new
86, // sprites:sprites_accb_Sprite_new
FfiConverterOptionalTypePoint.lower(initialPosition),
)
}
@@ -331,7 +331,7 @@ class Sprite {
FfiConverterTypePoint.checkType("reference", reference);
FfiConverterTypeVector.checkType("direction", direction);
return UniFFIScaffolding.callAsync(
87, // sprites:sprites_fec0_Sprite_new_relative_to
87, // sprites:sprites_accb_Sprite_new_relative_to
FfiConverterTypePoint.lower(reference),
FfiConverterTypeVector.lower(direction),
)
@@ -346,7 +346,7 @@ class Sprite {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
88, // sprites:sprites_fec0_Sprite_get_position
88, // sprites:sprites_accb_Sprite_get_position
FfiConverterTypeSprite.lower(this),
)
}
@@ -361,7 +361,7 @@ class Sprite {
const functionCall = () => {
FfiConverterTypePoint.checkType("position", position);
return UniFFIScaffolding.callAsync(
89, // sprites:sprites_fec0_Sprite_move_to
89, // sprites:sprites_accb_Sprite_move_to
FfiConverterTypeSprite.lower(this),
FfiConverterTypePoint.lower(position),
)
@@ -377,7 +377,7 @@ class Sprite {
const functionCall = () => {
FfiConverterTypeVector.checkType("direction", direction);
return UniFFIScaffolding.callAsync(
90, // sprites:sprites_fec0_Sprite_move_by
90, // sprites:sprites_accb_Sprite_move_by
FfiConverterTypeSprite.lower(this),
FfiConverterTypeVector.lower(direction),
)
@@ -567,7 +567,7 @@ function translate(position,direction) {
FfiConverterTypePoint.checkType("position", position);
FfiConverterTypeVector.checkType("direction", direction);
return UniFFIScaffolding.callAsync(
91, // sprites:sprites_fec0_translate
91, // sprites:sprites_accb_translate
FfiConverterTypePoint.lower(position),
FfiConverterTypeVector.lower(direction),
)

View File

@@ -287,7 +287,7 @@ class TodoList {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
92, // todolist:todolist_97c5_TodoList_new
92, // todolist:todolist_aa33_TodoList_new
)
}
try {
@@ -301,7 +301,7 @@ class TodoList {
const functionCall = () => {
FfiConverterString.checkType("todo", todo);
return UniFFIScaffolding.callAsync(
93, // todolist:todolist_97c5_TodoList_add_item
93, // todolist:todolist_aa33_TodoList_add_item
FfiConverterTypeTodoList.lower(this),
FfiConverterString.lower(todo),
)
@@ -317,7 +317,7 @@ class TodoList {
const functionCall = () => {
FfiConverterTypeTodoEntry.checkType("entry", entry);
return UniFFIScaffolding.callAsync(
94, // todolist:todolist_97c5_TodoList_add_entry
94, // todolist:todolist_aa33_TodoList_add_entry
FfiConverterTypeTodoList.lower(this),
FfiConverterTypeTodoEntry.lower(entry),
)
@@ -332,7 +332,7 @@ class TodoList {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
95, // todolist:todolist_97c5_TodoList_get_entries
95, // todolist:todolist_aa33_TodoList_get_entries
FfiConverterTypeTodoList.lower(this),
)
}
@@ -346,7 +346,7 @@ class TodoList {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
96, // todolist:todolist_97c5_TodoList_get_items
96, // todolist:todolist_aa33_TodoList_get_items
FfiConverterTypeTodoList.lower(this),
)
}
@@ -361,7 +361,7 @@ class TodoList {
const functionCall = () => {
FfiConverterSequenceTypeTodoEntry.checkType("entries", entries);
return UniFFIScaffolding.callAsync(
97, // todolist:todolist_97c5_TodoList_add_entries
97, // todolist:todolist_aa33_TodoList_add_entries
FfiConverterTypeTodoList.lower(this),
FfiConverterSequenceTypeTodoEntry.lower(entries),
)
@@ -377,7 +377,7 @@ class TodoList {
const functionCall = () => {
FfiConverterSequencestring.checkType("items", items);
return UniFFIScaffolding.callAsync(
98, // todolist:todolist_97c5_TodoList_add_items
98, // todolist:todolist_aa33_TodoList_add_items
FfiConverterTypeTodoList.lower(this),
FfiConverterSequencestring.lower(items),
)
@@ -392,7 +392,7 @@ class TodoList {
const liftError = (data) => FfiConverterTypeTodoError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
99, // todolist:todolist_97c5_TodoList_get_last_entry
99, // todolist:todolist_aa33_TodoList_get_last_entry
FfiConverterTypeTodoList.lower(this),
)
}
@@ -406,7 +406,7 @@ class TodoList {
const liftError = (data) => FfiConverterTypeTodoError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
100, // todolist:todolist_97c5_TodoList_get_last
100, // todolist:todolist_aa33_TodoList_get_last
FfiConverterTypeTodoList.lower(this),
)
}
@@ -420,7 +420,7 @@ class TodoList {
const liftError = (data) => FfiConverterTypeTodoError.lift(data);
const functionCall = () => {
return UniFFIScaffolding.callAsync(
101, // todolist:todolist_97c5_TodoList_get_first
101, // todolist:todolist_aa33_TodoList_get_first
FfiConverterTypeTodoList.lower(this),
)
}
@@ -435,7 +435,7 @@ class TodoList {
const functionCall = () => {
FfiConverterString.checkType("todo", todo);
return UniFFIScaffolding.callAsync(
102, // todolist:todolist_97c5_TodoList_clear_item
102, // todolist:todolist_aa33_TodoList_clear_item
FfiConverterTypeTodoList.lower(this),
FfiConverterString.lower(todo),
)
@@ -450,7 +450,7 @@ class TodoList {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
103, // todolist:todolist_97c5_TodoList_make_default
103, // todolist:todolist_aa33_TodoList_make_default
FfiConverterTypeTodoList.lower(this),
)
}
@@ -711,7 +711,7 @@ function getDefaultList() {
const liftError = null;
const functionCall = () => {
return UniFFIScaffolding.callAsync(
104, // todolist:todolist_97c5_get_default_list
104, // todolist:todolist_aa33_get_default_list
)
}
try {
@@ -729,7 +729,7 @@ function setDefaultList(list) {
const functionCall = () => {
FfiConverterTypeTodoList.checkType("list", list);
return UniFFIScaffolding.callAsync(
105, // todolist:todolist_97c5_set_default_list
105, // todolist:todolist_aa33_set_default_list
FfiConverterTypeTodoList.lower(list),
)
}
@@ -748,7 +748,7 @@ function createEntryWith(todo) {
const functionCall = () => {
FfiConverterString.checkType("todo", todo);
return UniFFIScaffolding.callAsync(
106, // todolist:todolist_97c5_create_entry_with
106, // todolist:todolist_aa33_create_entry_with
FfiConverterString.lower(todo),
)
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,121 +19,121 @@ using dom::UniFFIScaffoldingCallResult;
// Define scaffolding functions from UniFFI
extern "C" {
void ffi_tabs_1d6_TabsStore_object_free(void *, RustCallStatus*);
void * tabs_1d6_TabsStore_new(RustBuffer, RustCallStatus*);
RustBuffer tabs_1d6_TabsStore_get_all(void *, RustCallStatus*);
void tabs_1d6_TabsStore_set_local_tabs(void *, RustBuffer, RustCallStatus*);
void tabs_1d6_TabsStore_register_with_sync_manager(void *, RustCallStatus*);
void tabs_1d6_TabsStore_reset(void *, RustCallStatus*);
RustBuffer tabs_1d6_TabsStore_sync(void *, RustBuffer, RustBuffer, RustBuffer, RustBuffer, RustBuffer, RustCallStatus*);
void * tabs_1d6_TabsStore_bridged_engine(void *, RustCallStatus*);
void ffi_tabs_1d6_TabsBridgedEngine_object_free(void *, RustCallStatus*);
int64_t tabs_1d6_TabsBridgedEngine_last_sync(void *, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_set_last_sync(void *, int64_t, RustCallStatus*);
RustBuffer tabs_1d6_TabsBridgedEngine_sync_id(void *, RustCallStatus*);
RustBuffer tabs_1d6_TabsBridgedEngine_reset_sync_id(void *, RustCallStatus*);
RustBuffer tabs_1d6_TabsBridgedEngine_ensure_current_sync_id(void *, RustBuffer, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_prepare_for_sync(void *, RustBuffer, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_sync_started(void *, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_store_incoming(void *, RustBuffer, RustCallStatus*);
RustBuffer tabs_1d6_TabsBridgedEngine_apply(void *, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_set_uploaded(void *, int64_t, RustBuffer, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_sync_finished(void *, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_reset(void *, RustCallStatus*);
void tabs_1d6_TabsBridgedEngine_wipe(void *, RustCallStatus*);
void ffi_tabs_edc9_TabsStore_object_free(void *, RustCallStatus*);
void * tabs_edc9_TabsStore_new(RustBuffer, RustCallStatus*);
RustBuffer tabs_edc9_TabsStore_get_all(void *, RustCallStatus*);
void tabs_edc9_TabsStore_set_local_tabs(void *, RustBuffer, RustCallStatus*);
void tabs_edc9_TabsStore_register_with_sync_manager(void *, RustCallStatus*);
void tabs_edc9_TabsStore_reset(void *, RustCallStatus*);
RustBuffer tabs_edc9_TabsStore_sync(void *, RustBuffer, RustBuffer, RustBuffer, RustBuffer, RustBuffer, RustCallStatus*);
void * tabs_edc9_TabsStore_bridged_engine(void *, RustCallStatus*);
void ffi_tabs_edc9_TabsBridgedEngine_object_free(void *, RustCallStatus*);
int64_t tabs_edc9_TabsBridgedEngine_last_sync(void *, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_set_last_sync(void *, int64_t, RustCallStatus*);
RustBuffer tabs_edc9_TabsBridgedEngine_sync_id(void *, RustCallStatus*);
RustBuffer tabs_edc9_TabsBridgedEngine_reset_sync_id(void *, RustCallStatus*);
RustBuffer tabs_edc9_TabsBridgedEngine_ensure_current_sync_id(void *, RustBuffer, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_prepare_for_sync(void *, RustBuffer, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_sync_started(void *, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_store_incoming(void *, RustBuffer, RustCallStatus*);
RustBuffer tabs_edc9_TabsBridgedEngine_apply(void *, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_set_uploaded(void *, int64_t, RustBuffer, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_sync_finished(void *, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_reset(void *, RustCallStatus*);
void tabs_edc9_TabsBridgedEngine_wipe(void *, RustCallStatus*);
}
// Define pointer types
const static mozilla::uniffi::UniFFIPointerType kTabsTabsStorePointerType {
"tabs::TabsStore"_ns,
ffi_tabs_1d6_TabsStore_object_free
ffi_tabs_edc9_TabsStore_object_free
};
const static mozilla::uniffi::UniFFIPointerType kTabsTabsBridgedEnginePointerType {
"tabs::TabsBridgedEngine"_ns,
ffi_tabs_1d6_TabsBridgedEngine_object_free
ffi_tabs_edc9_TabsBridgedEngine_object_free
};
Maybe<already_AddRefed<Promise>> UniFFICallAsync(const GlobalObject& aGlobal, uint64_t aId, const Sequence<ScaffoldingType>& aArgs, ErrorResult& aError) {
switch (aId) {
case 0: { // tabs:tabs_1d6_TabsStore_new
case 0: { // tabs:tabs_edc9_TabsStore_new
using CallHandler = ScaffoldingCallHandler<ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_new, aGlobal, aArgs, "tabs_1d6_TabsStore_new: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_new, aGlobal, aArgs, "tabs_edc9_TabsStore_new: "_ns, aError));
}
case 1: { // tabs:tabs_1d6_TabsStore_get_all
case 1: { // tabs:tabs_edc9_TabsStore_get_all
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_get_all, aGlobal, aArgs, "tabs_1d6_TabsStore_get_all: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_get_all, aGlobal, aArgs, "tabs_edc9_TabsStore_get_all: "_ns, aError));
}
case 2: { // tabs:tabs_1d6_TabsStore_set_local_tabs
case 2: { // tabs:tabs_edc9_TabsStore_set_local_tabs
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_set_local_tabs, aGlobal, aArgs, "tabs_1d6_TabsStore_set_local_tabs: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_set_local_tabs, aGlobal, aArgs, "tabs_edc9_TabsStore_set_local_tabs: "_ns, aError));
}
case 3: { // tabs:tabs_1d6_TabsStore_register_with_sync_manager
case 3: { // tabs:tabs_edc9_TabsStore_register_with_sync_manager
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_register_with_sync_manager, aGlobal, aArgs, "tabs_1d6_TabsStore_register_with_sync_manager: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_register_with_sync_manager, aGlobal, aArgs, "tabs_edc9_TabsStore_register_with_sync_manager: "_ns, aError));
}
case 4: { // tabs:tabs_1d6_TabsStore_reset
case 4: { // tabs:tabs_edc9_TabsStore_reset
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_reset, aGlobal, aArgs, "tabs_1d6_TabsStore_reset: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_reset, aGlobal, aArgs, "tabs_edc9_TabsStore_reset: "_ns, aError));
}
case 5: { // tabs:tabs_1d6_TabsStore_sync
case 5: { // tabs:tabs_edc9_TabsStore_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_sync, aGlobal, aArgs, "tabs_1d6_TabsStore_sync: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_sync, aGlobal, aArgs, "tabs_edc9_TabsStore_sync: "_ns, aError));
}
case 6: { // tabs:tabs_1d6_TabsStore_bridged_engine
case 6: { // tabs:tabs_edc9_TabsStore_bridged_engine
using CallHandler = ScaffoldingCallHandler<ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsStore_bridged_engine, aGlobal, aArgs, "tabs_1d6_TabsStore_bridged_engine: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsStore_bridged_engine, aGlobal, aArgs, "tabs_edc9_TabsStore_bridged_engine: "_ns, aError));
}
case 7: { // tabs:tabs_1d6_TabsBridgedEngine_last_sync
case 7: { // tabs:tabs_edc9_TabsBridgedEngine_last_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<int64_t>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_last_sync, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_last_sync: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_last_sync, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_last_sync: "_ns, aError));
}
case 8: { // tabs:tabs_1d6_TabsBridgedEngine_set_last_sync
case 8: { // tabs:tabs_edc9_TabsBridgedEngine_set_last_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<int64_t>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_set_last_sync, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_set_last_sync: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_set_last_sync, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_set_last_sync: "_ns, aError));
}
case 9: { // tabs:tabs_1d6_TabsBridgedEngine_sync_id
case 9: { // tabs:tabs_edc9_TabsBridgedEngine_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_sync_id, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_sync_id: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_sync_id, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_sync_id: "_ns, aError));
}
case 10: { // tabs:tabs_1d6_TabsBridgedEngine_reset_sync_id
case 10: { // tabs:tabs_edc9_TabsBridgedEngine_reset_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_reset_sync_id, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_reset_sync_id: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_reset_sync_id, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_reset_sync_id: "_ns, aError));
}
case 11: { // tabs:tabs_1d6_TabsBridgedEngine_ensure_current_sync_id
case 11: { // tabs:tabs_edc9_TabsBridgedEngine_ensure_current_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_ensure_current_sync_id, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_ensure_current_sync_id: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_ensure_current_sync_id, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_ensure_current_sync_id: "_ns, aError));
}
case 12: { // tabs:tabs_1d6_TabsBridgedEngine_prepare_for_sync
case 12: { // tabs:tabs_edc9_TabsBridgedEngine_prepare_for_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_prepare_for_sync, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_prepare_for_sync: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_prepare_for_sync, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_prepare_for_sync: "_ns, aError));
}
case 13: { // tabs:tabs_1d6_TabsBridgedEngine_sync_started
case 13: { // tabs:tabs_edc9_TabsBridgedEngine_sync_started
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_sync_started, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_sync_started: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_sync_started, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_sync_started: "_ns, aError));
}
case 14: { // tabs:tabs_1d6_TabsBridgedEngine_store_incoming
case 14: { // tabs:tabs_edc9_TabsBridgedEngine_store_incoming
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_store_incoming, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_store_incoming: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_store_incoming, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_store_incoming: "_ns, aError));
}
case 15: { // tabs:tabs_1d6_TabsBridgedEngine_apply
case 15: { // tabs:tabs_edc9_TabsBridgedEngine_apply
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_apply, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_apply: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_apply, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_apply: "_ns, aError));
}
case 16: { // tabs:tabs_1d6_TabsBridgedEngine_set_uploaded
case 16: { // tabs:tabs_edc9_TabsBridgedEngine_set_uploaded
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<int64_t>, ScaffoldingConverter<RustBuffer>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_set_uploaded, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_set_uploaded: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_set_uploaded, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_set_uploaded: "_ns, aError));
}
case 17: { // tabs:tabs_1d6_TabsBridgedEngine_sync_finished
case 17: { // tabs:tabs_edc9_TabsBridgedEngine_sync_finished
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_sync_finished, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_sync_finished: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_sync_finished, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_sync_finished: "_ns, aError));
}
case 18: { // tabs:tabs_1d6_TabsBridgedEngine_reset
case 18: { // tabs:tabs_edc9_TabsBridgedEngine_reset
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_reset, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_reset: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_reset, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_reset: "_ns, aError));
}
case 19: { // tabs:tabs_1d6_TabsBridgedEngine_wipe
case 19: { // tabs:tabs_edc9_TabsBridgedEngine_wipe
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
return Some(CallHandler::CallAsync(tabs_1d6_TabsBridgedEngine_wipe, aGlobal, aArgs, "tabs_1d6_TabsBridgedEngine_wipe: "_ns, aError));
return Some(CallHandler::CallAsync(tabs_edc9_TabsBridgedEngine_wipe, aGlobal, aArgs, "tabs_edc9_TabsBridgedEngine_wipe: "_ns, aError));
}
}
return Nothing();
@@ -141,104 +141,104 @@ Maybe<already_AddRefed<Promise>> UniFFICallAsync(const GlobalObject& aGlobal, ui
bool UniFFICallSync(const GlobalObject& aGlobal, uint64_t aId, const Sequence<ScaffoldingType>& aArgs, RootedDictionary<UniFFIScaffoldingCallResult>& aReturnValue, ErrorResult& aError) {
switch (aId) {
case 0: { // tabs:tabs_1d6_TabsStore_new
case 0: { // tabs:tabs_edc9_TabsStore_new
using CallHandler = ScaffoldingCallHandler<ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsStore_new, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_new: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_new, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_new: "_ns, aError);
return true;
}
case 1: { // tabs:tabs_1d6_TabsStore_get_all
case 1: { // tabs:tabs_edc9_TabsStore_get_all
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsStore_get_all, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_get_all: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_get_all, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_get_all: "_ns, aError);
return true;
}
case 2: { // tabs:tabs_1d6_TabsStore_set_local_tabs
case 2: { // tabs:tabs_edc9_TabsStore_set_local_tabs
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsStore_set_local_tabs, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_set_local_tabs: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_set_local_tabs, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_set_local_tabs: "_ns, aError);
return true;
}
case 3: { // tabs:tabs_1d6_TabsStore_register_with_sync_manager
case 3: { // tabs:tabs_edc9_TabsStore_register_with_sync_manager
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsStore_register_with_sync_manager, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_register_with_sync_manager: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_register_with_sync_manager, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_register_with_sync_manager: "_ns, aError);
return true;
}
case 4: { // tabs:tabs_1d6_TabsStore_reset
case 4: { // tabs:tabs_edc9_TabsStore_reset
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsStore_reset, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_reset: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_reset, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_reset: "_ns, aError);
return true;
}
case 5: { // tabs:tabs_1d6_TabsStore_sync
case 5: { // tabs:tabs_edc9_TabsStore_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsStore_sync, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_sync: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_sync, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_sync: "_ns, aError);
return true;
}
case 6: { // tabs:tabs_1d6_TabsStore_bridged_engine
case 6: { // tabs:tabs_edc9_TabsStore_bridged_engine
using CallHandler = ScaffoldingCallHandler<ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingObjectConverter<&kTabsTabsStorePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsStore_bridged_engine, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsStore_bridged_engine: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsStore_bridged_engine, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsStore_bridged_engine: "_ns, aError);
return true;
}
case 7: { // tabs:tabs_1d6_TabsBridgedEngine_last_sync
case 7: { // tabs:tabs_edc9_TabsBridgedEngine_last_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<int64_t>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_last_sync, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_last_sync: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_last_sync, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_last_sync: "_ns, aError);
return true;
}
case 8: { // tabs:tabs_1d6_TabsBridgedEngine_set_last_sync
case 8: { // tabs:tabs_edc9_TabsBridgedEngine_set_last_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<int64_t>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_set_last_sync, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_set_last_sync: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_set_last_sync, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_set_last_sync: "_ns, aError);
return true;
}
case 9: { // tabs:tabs_1d6_TabsBridgedEngine_sync_id
case 9: { // tabs:tabs_edc9_TabsBridgedEngine_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_sync_id, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_sync_id: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_sync_id, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_sync_id: "_ns, aError);
return true;
}
case 10: { // tabs:tabs_1d6_TabsBridgedEngine_reset_sync_id
case 10: { // tabs:tabs_edc9_TabsBridgedEngine_reset_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_reset_sync_id, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_reset_sync_id: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_reset_sync_id, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_reset_sync_id: "_ns, aError);
return true;
}
case 11: { // tabs:tabs_1d6_TabsBridgedEngine_ensure_current_sync_id
case 11: { // tabs:tabs_edc9_TabsBridgedEngine_ensure_current_sync_id
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_ensure_current_sync_id, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_ensure_current_sync_id: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_ensure_current_sync_id, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_ensure_current_sync_id: "_ns, aError);
return true;
}
case 12: { // tabs:tabs_1d6_TabsBridgedEngine_prepare_for_sync
case 12: { // tabs:tabs_edc9_TabsBridgedEngine_prepare_for_sync
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_prepare_for_sync, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_prepare_for_sync: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_prepare_for_sync, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_prepare_for_sync: "_ns, aError);
return true;
}
case 13: { // tabs:tabs_1d6_TabsBridgedEngine_sync_started
case 13: { // tabs:tabs_edc9_TabsBridgedEngine_sync_started
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_sync_started, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_sync_started: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_sync_started, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_sync_started: "_ns, aError);
return true;
}
case 14: { // tabs:tabs_1d6_TabsBridgedEngine_store_incoming
case 14: { // tabs:tabs_edc9_TabsBridgedEngine_store_incoming
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_store_incoming, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_store_incoming: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_store_incoming, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_store_incoming: "_ns, aError);
return true;
}
case 15: { // tabs:tabs_1d6_TabsBridgedEngine_apply
case 15: { // tabs:tabs_edc9_TabsBridgedEngine_apply
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<RustBuffer>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_apply, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_apply: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_apply, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_apply: "_ns, aError);
return true;
}
case 16: { // tabs:tabs_1d6_TabsBridgedEngine_set_uploaded
case 16: { // tabs:tabs_edc9_TabsBridgedEngine_set_uploaded
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>, ScaffoldingConverter<int64_t>, ScaffoldingConverter<RustBuffer>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_set_uploaded, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_set_uploaded: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_set_uploaded, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_set_uploaded: "_ns, aError);
return true;
}
case 17: { // tabs:tabs_1d6_TabsBridgedEngine_sync_finished
case 17: { // tabs:tabs_edc9_TabsBridgedEngine_sync_finished
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_sync_finished, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_sync_finished: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_sync_finished, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_sync_finished: "_ns, aError);
return true;
}
case 18: { // tabs:tabs_1d6_TabsBridgedEngine_reset
case 18: { // tabs:tabs_edc9_TabsBridgedEngine_reset
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_reset, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_reset: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_reset, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_reset: "_ns, aError);
return true;
}
case 19: { // tabs:tabs_1d6_TabsBridgedEngine_wipe
case 19: { // tabs:tabs_edc9_TabsBridgedEngine_wipe
using CallHandler = ScaffoldingCallHandler<ScaffoldingConverter<void>, ScaffoldingObjectConverter<&kTabsTabsBridgedEnginePointerType>>;
CallHandler::CallSync(tabs_1d6_TabsBridgedEngine_wipe, aGlobal, aArgs, aReturnValue, "tabs_1d6_TabsBridgedEngine_wipe: "_ns, aError);
CallHandler::CallSync(tabs_edc9_TabsBridgedEngine_wipe, aGlobal, aArgs, aReturnValue, "tabs_edc9_TabsBridgedEngine_wipe: "_ns, aError);
return true;
}
}