From c2846dfec7c870a00618c11d8875c0151f40df60 Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Mon, 1 Jun 2026 19:04:58 +0200 Subject: [PATCH 01/48] Add team player tui --- pixi.toml | 1 + .../bitbots_bringup/tui/Cargo.lock | 683 +++++++++ .../bitbots_bringup/tui/Cargo.toml | 16 + .../bitbots_bringup/tui/src/main.rs | 1314 +++++++++++++++++ 4 files changed, 2014 insertions(+) create mode 100644 src/bitbots_misc/bitbots_bringup/tui/Cargo.lock create mode 100644 src/bitbots_misc/bitbots_bringup/tui/Cargo.toml create mode 100644 src/bitbots_misc/bitbots_bringup/tui/src/main.rs diff --git a/pixi.toml b/pixi.toml index 24faec9bf6..59e571be17 100644 --- a/pixi.toml +++ b/pixi.toml @@ -14,6 +14,7 @@ version = "0.1.0" zenoh = "ros2 run rmw_zenoh_cpp rmw_zenohd" deploy = {cmd = "scripts/deploy_robots.py", description = "Deploys the current environment."} format = {cmd = "pre-commit run --all-files", description = "Runs code formatting and linting."} +teamplayer = { cmd = "cargo run --release --manifest-path src/bitbots_misc/bitbots_bringup/tui/Cargo.toml", description = "Launch the teamplayer TUI (Rust/ratatui)" } [tasks.build] # Skipping ZED-camera related packages as they require a local installation of the ZED SDK. diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock new file mode 100644 index 0000000000..e6ea2c6f00 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock @@ -0,0 +1,683 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "cassowary" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "castaway" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags", + "crossterm_winapi", + "futures-core", + "libc", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "either" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ratatui" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" +dependencies = [ + "bitflags", + "cassowary", + "compact_str", + "crossterm", + "itertools 0.12.1", + "lru", + "paste", + "stability", + "strum", + "unicode-segmentation", + "unicode-truncate", + "unicode-width", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "stability" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "teamplayer-tui" +version = "0.1.0" +dependencies = [ + "anyhow", + "crossterm", + "futures", + "libc", + "ratatui", + "tokio", +] + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio 1.2.0", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-truncate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +dependencies = [ + "itertools 0.13.0", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml new file mode 100644 index 0000000000..5f10c415bb --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "teamplayer-tui" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "teamplayer_tui" +path = "src/main.rs" + +[dependencies] +ratatui = "0.26" +crossterm = { version = "0.27", features = ["event-stream"] } +tokio = { version = "1", features = ["full"] } +anyhow = "1" +futures = "0.3" +libc = "0.2" diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs new file mode 100644 index 0000000000..08af368224 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -0,0 +1,1314 @@ +use std::{ + collections::VecDeque, + sync::{Arc, Mutex}, + time::Duration, +}; + +use anyhow::Result; +use crossterm::{ + event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream, KeyCode, KeyModifiers}, + execute, + terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, +}; +use futures::StreamExt; +use ratatui::{ + backend::CrosstermBackend, + layout::{Alignment, Constraint, Direction, Layout, Rect}, + style::{Color, Modifier, Style}, + text::{Line, Span}, + widgets::{Block, Borders, Paragraph}, + Frame, Terminal, +}; +use tokio::{ + io::{AsyncBufReadExt, BufReader}, + process::Command, + sync::mpsc, +}; + +// ─── Types ──────────────────────────────────────────────────────────────────── + +#[derive(Clone, Debug, PartialEq)] +enum ProcState { + Idle, + Running, + Stopping, + Stopped, + Crashed, +} + +impl ProcState { + fn label(&self) -> &'static str { + match self { + ProcState::Idle => "IDLE", + ProcState::Running => "RUN ", + ProcState::Stopping => "STOP", + ProcState::Stopped => "DONE", + ProcState::Crashed => "FAIL", + } + } + fn style(&self) -> Style { + match self { + ProcState::Idle => Style::default().fg(Color::DarkGray), + ProcState::Running => Style::default().fg(Color::Green), + ProcState::Stopping => Style::default().fg(Color::Yellow), + ProcState::Stopped => Style::default().fg(Color::Blue), + ProcState::Crashed => Style::default().fg(Color::Red), + } + } +} + +#[derive(Clone, Debug)] +struct GlobalParams { + sim: bool, + zenoh: bool, + fieldname: String, + dsd_file: String, +} + +impl Default for GlobalParams { + fn default() -> Self { + Self { + sim: false, + zenoh: true, + fieldname: String::new(), + dsd_file: "main.dsd".to_string(), + } + } +} + +struct ComponentDef { + name: &'static str, + key: &'static str, + default_enabled: bool, + infrastructure: bool, + /// Component is only valid on real hardware — hidden/disabled when sim=true + hardware_only: bool, + cmds: fn(&GlobalParams) -> Vec>, +} + +struct ComponentState { + def_idx: usize, + enabled: bool, + state: ProcState, + logs: Arc>>, + pids: Vec, + task_handles: Vec>, +} + +impl ComponentState { + fn new(def_idx: usize, enabled: bool) -> Self { + Self { + def_idx, + enabled, + state: ProcState::Idle, + logs: Arc::new(Mutex::new(VecDeque::with_capacity(2000))), + pids: Vec::new(), + task_handles: Vec::new(), + } + } +} + +enum AppMsg { + ProcessExited { key: String, code: i32 }, +} + +// ─── Component definitions ──────────────────────────────────────────────────── + +fn make_ros2_launch(pkg: &str, file: &str, extra: &[&str]) -> Vec { + let mut cmd = vec![ + "ros2".to_string(), + "launch".to_string(), + pkg.to_string(), + file.to_string(), + ]; + for e in extra { + cmd.push(e.to_string()); + } + cmd +} + +fn make_ros2_run(pkg: &str, exec: &str, extra: &[&str]) -> Vec { + let mut cmd = vec![ + "ros2".to_string(), + "run".to_string(), + pkg.to_string(), + exec.to_string(), + ]; + for e in extra { + cmd.push(e.to_string()); + } + cmd +} + +fn sim_arg(params: &GlobalParams) -> String { + format!("sim:={}", params.sim) +} + +static COMPONENT_DEFS: &[ComponentDef] = &[ + // ── Infrastructure (always started) ── + ComponentDef { + name: "Zenoh", + key: "zenoh", + default_enabled: true, + infrastructure: true, + hardware_only: false, + cmds: |_p| vec![make_ros2_run("rmw_zenoh_cpp", "rmw_zenohd", &[])], + }, + ComponentDef { + name: "Param Blackboard", + key: "blackboard", + default_enabled: true, + infrastructure: true, + hardware_only: false, + cmds: |_p| { + vec![make_ros2_run( + "parameter_blackboard", + "parameter_blackboard", + &["--ros-args", "-p", "use_sim_time:=false"], + )] + }, + }, + ComponentDef { + name: "Robot Description", + key: "robot_description", + default_enabled: true, + infrastructure: true, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_bringup", + "robot_description.launch", + &[&sim_arg(p)], + )] + }, + }, + ComponentDef { + name: "Diagnostics", + key: "diagnostics", + default_enabled: true, + infrastructure: true, + hardware_only: false, + cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "diagnostics.launch", &[])], + }, + ComponentDef { + name: "Simulator", + key: "simulator", + default_enabled: false, + infrastructure: true, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_bringup", + "mujoco_simulation.launch.py", + &[&sim_arg(p)], + )] + }, + }, + // ── User-toggleable ── + ComponentDef { + name: "Lowlevel", + key: "lowlevel", + default_enabled: true, + infrastructure: false, + hardware_only: true, // hardware interface — never in sim + cmds: |_p| vec![make_ros2_launch("livelybot_bringup", "lowlevel.launch", &[])], + }, + ComponentDef { + name: "Motion", + key: "motion", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_bringup", + "motion.launch", + &[&sim_arg(p)], + )] + }, + }, + ComponentDef { + name: "Game Controller", + key: "game_controller", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "game_controller_hsl", + "game_controller.launch", + &[ + &sim_arg(p), + "use_parameter_blackboard:=true", + "parameter_blackboard_name:=parameter_blackboard", + "team_id_param_name:=team_id", + "bot_id_param_name:=bot_id", + ], + )] + }, + }, + ComponentDef { + name: "Vision", + key: "vision", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch("bitbots_bringup", "vision.launch", &[&sim_arg(p)])] + }, + }, + ComponentDef { + name: "IPM", + key: "ipm", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch("bitbots_ipm", "ipm.launch", &[&sim_arg(p)])] + }, + }, + ComponentDef { + name: "Localization", + key: "localization", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_localization", + "localization.launch", + &[&sim_arg(p)], + )] + }, + }, + ComponentDef { + name: "Path Planning", + key: "path_planning", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_path_planning", + "path_planning.launch", + &[&sim_arg(p)], + )] + }, + }, + ComponentDef { + name: "Behavior", + key: "behavior", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_body_behavior", + "behavior.launch", + &[&sim_arg(p), &format!("dsd_file:={}", p.dsd_file)], + )] + }, + }, + ComponentDef { + name: "Team Comm", + key: "teamcom", + default_enabled: false, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_team_communication", + "team_comm.launch", + &[&sim_arg(p)], + )] + }, + }, + ComponentDef { + name: "World Model", + key: "world_model", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![ + make_ros2_launch("bitbots_ball_filter", "ball_filter.launch", &[&sim_arg(p)]), + make_ros2_launch("bitbots_robot_filter", "robot_filter.launch", &[&sim_arg(p)]), + ] + }, + }, + ComponentDef { + name: "Whistle Det.", + key: "whistle_detector", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |_p| { + vec![make_ros2_launch( + "bitbots_whistle_detector", + "whistle_detector.launch", + &[], + )] + }, + }, + ComponentDef { + name: "Audio", + key: "audio", + default_enabled: true, + infrastructure: false, + hardware_only: false, + cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "audio.launch", &[])], + }, + ComponentDef { + name: "TTS", + key: "tts", + default_enabled: false, + infrastructure: false, + hardware_only: false, + cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "tts.launch", &[])], + }, + ComponentDef { + name: "Monitoring", + key: "monitoring", + default_enabled: false, + infrastructure: false, + hardware_only: false, + cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "monitoring.launch", &[])], + }, + ComponentDef { + name: "Recording", + key: "record", + default_enabled: false, + infrastructure: false, + hardware_only: false, + cmds: |p| { + vec![make_ros2_launch( + "bitbots_bringup", + "record.launch", + &[&format!("fieldname:={}", p.fieldname)], + )] + }, + }, +]; + +// ─── Screens ────────────────────────────────────────────────────────────────── + +#[derive(PartialEq, Clone)] +enum Screen { + Config, + Runtime, + Logs(usize), // component index +} + +// Config screen focus items +#[derive(Clone, PartialEq, Debug)] +enum ConfigFocus { + Zenoh, + Sim, + Fieldname, + DsdFile, + Component(usize), // index into toggleable components list + Start, +} + +// ─── App state ──────────────────────────────────────────────────────────────── + +struct App { + screen: Screen, + params: GlobalParams, + components: Vec, + config_focus: ConfigFocus, + config_fieldname_input: String, + config_dsd_input: String, + runtime_selected: usize, + tick_count: u64, + msg_tx: mpsc::UnboundedSender, + msg_rx: mpsc::UnboundedReceiver, + log_scroll: usize, +} + +impl App { + fn new() -> Self { + let (msg_tx, msg_rx) = mpsc::unbounded_channel(); + let mut components: Vec = COMPONENT_DEFS + .iter() + .enumerate() + .map(|(i, def)| ComponentState::new(i, def.default_enabled)) + .collect(); + + // Simulator is only enabled when sim=true + let sim_idx = COMPONENT_DEFS.iter().position(|d| d.key == "simulator").unwrap(); + components[sim_idx].enabled = false; + + App { + screen: Screen::Config, + params: GlobalParams::default(), + components, + config_focus: ConfigFocus::Zenoh, + config_fieldname_input: String::new(), + config_dsd_input: "main.dsd".to_string(), + runtime_selected: 0, + tick_count: 0, + msg_tx, + msg_rx, + log_scroll: 0, + } + } + + fn toggleable_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(_, d)| !d.infrastructure && !(d.hardware_only && self.params.sim)) + .map(|(i, _)| i) + .collect() + } + + fn config_focus_items(&self) -> Vec { + let mut items = vec![ConfigFocus::Zenoh, ConfigFocus::Sim, ConfigFocus::Fieldname, ConfigFocus::DsdFile]; + let toggleables = self.toggleable_indices(); + for i in 0..toggleables.len() { + items.push(ConfigFocus::Component(i)); + } + items.push(ConfigFocus::Start); + items + } + + fn config_focus_next(&mut self) { + let items = self.config_focus_items(); + let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); + self.config_focus = items[(pos + 1) % items.len()].clone(); + } + + fn config_focus_prev(&mut self) { + let items = self.config_focus_items(); + let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); + self.config_focus = items[(pos + items.len() - 1) % items.len()].clone(); + } + + fn runtime_visible_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(i, d)| { + // Simulator row only appears when sim=true + if d.key == "simulator" { + return self.params.sim; + } + // Hardware-only components are never shown in sim + if d.hardware_only && self.params.sim { + return false; + } + self.components[*i].enabled + }) + .map(|(i, _)| i) + .collect() + } + + async fn start_component(&mut self, comp_idx: usize) { + let def = &COMPONENT_DEFS[comp_idx]; + let cmds = (def.cmds)(&self.params); + let key = def.key.to_string(); + + // Extract what we need before the loop so we don't hold &mut self.components + let logs = self.components[comp_idx].logs.clone(); + self.components[comp_idx].state = ProcState::Running; + self.components[comp_idx].pids.clear(); + self.components[comp_idx].task_handles.clear(); + + for cmd_args in cmds { + if cmd_args.is_empty() { + continue; + } + let tx = self.msg_tx.clone(); + let logs = logs.clone(); + let key = key.clone(); + + let mut child = match Command::new(&cmd_args[0]) + .args(&cmd_args[1..]) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + // New process group so we can kill the entire ros2 launch tree + .process_group(0) + .kill_on_drop(true) + .spawn() + { + Ok(c) => c, + Err(e) => { + let mut l = logs.lock().unwrap(); + l.push_back(format!("[ERROR] spawn failed: {e}")); + drop(l); + let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); + return; + } + }; + + if let Some(pid) = child.id() { + self.components[comp_idx].pids.push(pid); + } + + let stdout = child.stdout.take().map(BufReader::new); + let stderr = child.stderr.take().map(BufReader::new); + + let handle = tokio::spawn(async move { + // Interleave stdout+stderr into log buffer + if let Some(mut reader) = stdout { + let mut line = String::new(); + while let Ok(n) = reader.read_line(&mut line).await { + if n == 0 { break; } + let trimmed = line.trim_end_matches('\n').to_string(); + let mut l = logs.lock().unwrap(); + if l.len() >= 2000 { l.pop_front(); } + l.push_back(trimmed); + line.clear(); + } + } + if let Some(mut reader) = stderr { + let mut line = String::new(); + while let Ok(n) = reader.read_line(&mut line).await { + if n == 0 { break; } + let trimmed = format!("[ERR] {}", line.trim_end_matches('\n')); + let mut l = logs.lock().unwrap(); + if l.len() >= 2000 { l.pop_front(); } + l.push_back(trimmed); + line.clear(); + } + } + let code = child.wait().await.map(|s| s.code().unwrap_or(-1)).unwrap_or(-1); + let _ = tx.send(AppMsg::ProcessExited { key, code }); + }); + self.components[comp_idx].task_handles.push(handle); + } + } + + async fn stop_component(&mut self, comp_idx: usize) { + let comp = &mut self.components[comp_idx]; + if comp.state != ProcState::Running { + return; + } + comp.state = ProcState::Stopping; + let pids = comp.pids.clone(); + for &pid in &pids { + unsafe { + // Negative PID = send to entire process group (kills ros2 launch children too) + libc::kill(-(pid as libc::pid_t), libc::SIGTERM); + } + } + tokio::spawn(async move { + tokio::time::sleep(Duration::from_secs(5)).await; + for pid in pids { + unsafe { + libc::kill(-(pid as libc::pid_t), libc::SIGKILL); + } + } + }); + } + + async fn stop_all(&mut self) { + let indices: Vec = (0..self.components.len()).collect(); + for i in indices { + if self.components[i].state == ProcState::Running { + self.stop_component(i).await; + } + } + } + + async fn start_all_enabled(&mut self) { + let enabled: Vec = self.components + .iter() + .enumerate() + .filter(|(_, c)| c.enabled && c.state == ProcState::Idle) + .map(|(i, _)| i) + .collect(); + for i in enabled { + self.start_component(i).await; + } + } + + fn drain_messages(&mut self) { + while let Ok(msg) = self.msg_rx.try_recv() { + match msg { + AppMsg::ProcessExited { key, code } => { + if let Some(comp) = self.components.iter_mut().find(|c| { + COMPONENT_DEFS[c.def_idx].key == key + }) { + if comp.state == ProcState::Stopping || comp.state == ProcState::Running { + comp.state = if code == 0 { + ProcState::Stopped + } else { + ProcState::Crashed + }; + comp.pids.clear(); + } + } + } + } + } + } +} + +// ─── Rendering ──────────────────────────────────────────────────────────────── + +const BANNER: &str = r#" + ██████╗ ██╗████████╗ ██████╗ ██████╗ ████████╗███████╗ + ██╔══██╗██║╚══██╔══╝ ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝ + ██████╔╝██║ ██║ ██████╔╝██║ ██║ ██║ ███████╗ + ██╔══██╗██║ ██║ ██╔══██╗██║ ██║ ██║ ╚════██║ + ██████╔╝██║ ██║ ██████╔╝╚██████╔╝ ██║ ███████║ + ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ + Teamplayer Launcher +"#; + +fn spinner_char(tick: u64) -> char { + const FRAMES: &[char] = &['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; + FRAMES[(tick as usize) % FRAMES.len()] +} + +fn draw(f: &mut Frame, app: &App) { + match &app.screen { + Screen::Config => draw_config(f, app), + Screen::Runtime => draw_runtime(f, app), + Screen::Logs(idx) => draw_logs(f, app, *idx), + } +} + +fn draw_config(f: &mut Frame, app: &App) { + let area = f.size(); + + let banner_lines = BANNER.lines().count() as u16; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(banner_lines), + Constraint::Length(3), // global flags bar + Constraint::Min(0), // component grid + Constraint::Length(3), // Start/Continue button + Constraint::Length(1), // footer + ]) + .split(area); + + let banner = Paragraph::new(BANNER) + .style(Style::default().fg(Color::Cyan)) + .alignment(Alignment::Center); + f.render_widget(banner, chunks[0]); + + draw_config_flags(f, app, chunks[1]); + draw_config_components(f, app, chunks[2]); + draw_start_button(f, app, chunks[3]); + + let footer = Paragraph::new( + " Tab/↑↓: navigate Space/Enter: toggle/select q: quit", + ) + .style(Style::default().fg(Color::DarkGray)); + f.render_widget(footer, chunks[4]); +} + +fn draw_start_button(f: &mut Frame, app: &App, area: Rect) { + let focused = app.config_focus == ConfigFocus::Start; + let has_running = app.components.iter().any(|c| c.state == ProcState::Running); + + let label = if has_running { " Continue → " } else { " Launch → " }; + + let (border_style, text_style) = if focused { + ( + Style::default().fg(Color::Yellow), + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD), + ) + } else { + ( + Style::default().fg(Color::Green), + Style::default().fg(Color::Green).add_modifier(Modifier::BOLD), + ) + }; + + let button = Paragraph::new(label) + .block(Block::default().borders(Borders::ALL).border_style(border_style)) + .style(text_style) + .alignment(Alignment::Center); + f.render_widget(button, area); +} + +fn draw_config_flags(f: &mut Frame, app: &App, area: Rect) { + let chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([ + Constraint::Length(18), // Zenoh + Constraint::Length(18), // Sim + Constraint::Min(20), // Fieldname + Constraint::Min(20), // DSD file + ]) + .split(area); + + let zenoh_focused = app.config_focus == ConfigFocus::Zenoh; + let sim_focused = app.config_focus == ConfigFocus::Sim; + let field_focused = app.config_focus == ConfigFocus::Fieldname; + let dsd_focused = app.config_focus == ConfigFocus::DsdFile; + + let zenoh_style = if zenoh_focused { + Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD) + } else { + Style::default().fg(Color::White) + }; + let zenoh_text = if app.params.zenoh { "[✓] Zenoh" } else { "[ ] Zenoh" }; + let zenoh_p = Paragraph::new(zenoh_text) + .block(Block::default().borders(Borders::ALL).border_style(if zenoh_focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + })) + .style(zenoh_style); + f.render_widget(zenoh_p, chunks[0]); + + let sim_style = if sim_focused { + Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD) + } else { + Style::default().fg(Color::White) + }; + let sim_text = if app.params.sim { "[✓] Simulator" } else { "[ ] Simulator" }; + let sim_p = Paragraph::new(sim_text) + .block(Block::default().borders(Borders::ALL).border_style(if sim_focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + })) + .style(sim_style); + f.render_widget(sim_p, chunks[1]); + + let field_p = Paragraph::new(app.config_fieldname_input.as_str()) + .block(Block::default().borders(Borders::ALL).title("Fieldname").border_style(if field_focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + })); + f.render_widget(field_p, chunks[2]); + + let dsd_p = Paragraph::new(app.config_dsd_input.as_str()) + .block(Block::default().borders(Borders::ALL).title("DSD File").border_style(if dsd_focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + })); + f.render_widget(dsd_p, chunks[3]); +} + +fn draw_config_components(f: &mut Frame, app: &App, area: Rect) { + let toggleables = app.toggleable_indices(); + + // Split into two columns + let col_chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) + .split(area); + + let left_count = (toggleables.len() + 1) / 2; + let (left_indices, right_indices) = toggleables.split_at(left_count); + + draw_component_column(f, app, col_chunks[0], left_indices, 0); + draw_component_column(f, app, col_chunks[1], right_indices, left_indices.len()); +} + +fn draw_component_column( + f: &mut Frame, + app: &App, + area: Rect, + comp_indices: &[usize], + focus_offset: usize, +) { + let rows: Vec = comp_indices + .iter() + .map(|_| Constraint::Length(1)) + .collect(); + if rows.is_empty() { + return; + } + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (local_i, &comp_idx) in comp_indices.iter().enumerate() { + let focus_i = focus_offset + local_i; + let focused = app.config_focus == ConfigFocus::Component(focus_i); + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let check = if comp.enabled { "✓" } else { " " }; + let text = format!("[{}] {}", check, def.name); + + let style = if focused { + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD) + } else if comp.enabled { + Style::default().fg(Color::White) + } else { + Style::default().fg(Color::DarkGray) + }; + + let p = Paragraph::new(text).style(style); + if local_i < chunks.len() { + f.render_widget(p, chunks[local_i]); + } + } + + // Start button at bottom of right column + // (handled separately in draw_config) +} + +fn draw_runtime(f: &mut Frame, app: &App) { + let area = f.size(); + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(3), // header + Constraint::Min(0), // component list + Constraint::Length(1), // footer + ]) + .split(area); + + // Header + draw_runtime_header(f, app, chunks[0]); + + // Component list + draw_runtime_list(f, app, chunks[1]); + + // Footer + let footer = Paragraph::new( + " ↑↓: select s: start/stop r: restart l: logs a: start all x: stop all q: quit", + ) + .style(Style::default().fg(Color::DarkGray)); + f.render_widget(footer, chunks[2]); +} + +fn draw_runtime_header(f: &mut Frame, app: &App, area: Rect) { + let running = app.components.iter().filter(|c| c.state == ProcState::Running).count(); + let total_enabled = app.components.iter().filter(|c| c.enabled).count(); + + let title = format!(" Bit-Bots Teamplayer [{running}/{total_enabled} running]"); + let sim_badge = if app.params.sim { " SIM " } else { "" }; + let text = format!("{title}{sim_badge}"); + + let p = Paragraph::new(text) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)); + f.render_widget(p, area); +} + +fn draw_runtime_list(f: &mut Frame, app: &App, area: Rect) { + let visible = app.runtime_visible_indices(); + if visible.is_empty() { + let p = Paragraph::new("No components enabled.").alignment(Alignment::Center); + f.render_widget(p, area); + return; + } + + let row_height = 1u16; + let rows: Vec = visible.iter().map(|_| Constraint::Length(row_height)).collect(); + let row_chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (vis_i, &comp_idx) in visible.iter().enumerate() { + let selected = app.runtime_selected == vis_i; + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + if vis_i < row_chunks.len() { + draw_runtime_row(f, app, row_chunks[vis_i], comp, def, selected); + } + } +} + +fn draw_runtime_row( + f: &mut Frame, + app: &App, + area: Rect, + comp: &ComponentState, + def: &ComponentDef, + selected: bool, +) { + let row_style = if selected { + Style::default().bg(Color::DarkGray) + } else { + Style::default() + }; + + let spinner = match comp.state { + ProcState::Running => format!("{} ", spinner_char(app.tick_count)), + ProcState::Stopping => "… ".to_string(), + _ => " ".to_string(), + }; + + let state_label = comp.state.label(); + let state_style = comp.state.style(); + + let infra_marker = if def.infrastructure { "·" } else { " " }; + + let line = Line::from(vec![ + Span::styled(format!("{infra_marker}"), Style::default().fg(Color::DarkGray)), + Span::styled(spinner, Style::default().fg(Color::Green)), + Span::styled( + format!("[{state_label}]"), + state_style.add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + Span::styled( + format!("{:<16}", def.name), + if selected { + Style::default().fg(Color::White).add_modifier(Modifier::BOLD) + } else { + Style::default() + }, + ), + Span::raw(" "), + Span::styled("s", Style::default().fg(Color::Yellow)), + Span::raw(":start/stop "), + Span::styled("r", Style::default().fg(Color::Yellow)), + Span::raw(":restart "), + Span::styled("l", Style::default().fg(Color::Yellow)), + Span::raw(":logs"), + ]); + + let p = Paragraph::new(line).style(row_style); + f.render_widget(p, area); +} + +fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { + let area = f.size(); + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) + .split(area); + + let title = format!(" Logs: {} ", def.name); + let header = Paragraph::new(title) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)); + f.render_widget(header, chunks[0]); + + let log_area = chunks[1]; + let log_height = log_area.height as usize; + + let lines: Vec = { + let logs = comp.logs.lock().unwrap(); + let total = logs.len(); + let scroll = app.log_scroll.min(if total > log_height { total - log_height } else { 0 }); + logs.iter() + .skip(scroll) + .take(log_height) + .map(|s| Line::from(s.clone())) + .collect() + }; + + let log_p = Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::White)); + f.render_widget(log_p, log_area); + + let footer = Paragraph::new(" ↑↓/PgUp/PgDn: scroll Esc/q: back G: jump to end") + .style(Style::default().fg(Color::DarkGray)); + f.render_widget(footer, chunks[2]); +} + +// ─── Input handling ─────────────────────────────────────────────────────────── + +async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { + match (&app.config_focus.clone(), key) { + // Navigation + (_, KeyCode::Tab) => { + if modifiers.contains(KeyModifiers::SHIFT) { + app.config_focus_prev(); + } else { + app.config_focus_next(); + } + } + (_, KeyCode::Down) => app.config_focus_next(), + (_, KeyCode::Up) => app.config_focus_prev(), + + // Zenoh toggle + (ConfigFocus::Zenoh, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.zenoh = !app.params.zenoh; + let zenoh_idx = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh").unwrap(); + app.components[zenoh_idx].enabled = app.params.zenoh; + } + + // Sim toggle + (ConfigFocus::Sim, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.sim = !app.params.sim; + let sim = app.params.sim; + for (i, def) in COMPONENT_DEFS.iter().enumerate() { + if def.key == "simulator" { + app.components[i].enabled = sim; + } else if def.hardware_only { + // Auto-disable HW-only components in sim, restore default otherwise + app.components[i].enabled = !sim && def.default_enabled; + } + } + // Reset config focus if it now points at a hidden component + app.config_focus = ConfigFocus::Zenoh; + } + + // Fieldname text input + (ConfigFocus::Fieldname, KeyCode::Char(c)) => { + app.config_fieldname_input.push(c); + app.params.fieldname = app.config_fieldname_input.clone(); + } + (ConfigFocus::Fieldname, KeyCode::Backspace) => { + app.config_fieldname_input.pop(); + app.params.fieldname = app.config_fieldname_input.clone(); + } + + // DSD file text input + (ConfigFocus::DsdFile, KeyCode::Char(c)) => { + app.config_dsd_input.push(c); + app.params.dsd_file = app.config_dsd_input.clone(); + } + (ConfigFocus::DsdFile, KeyCode::Backspace) => { + app.config_dsd_input.pop(); + app.params.dsd_file = app.config_dsd_input.clone(); + } + + // Component checkbox toggle + (ConfigFocus::Component(fi), KeyCode::Char(' ') | KeyCode::Enter) => { + let fi = *fi; + let toggleables = app.toggleable_indices(); + if fi < toggleables.len() { + let comp_idx = toggleables[fi]; + app.components[comp_idx].enabled = !app.components[comp_idx].enabled; + } + } + + // Start button + (ConfigFocus::Start, KeyCode::Enter | KeyCode::Char(' ')) => { + // Transition to runtime + app.params.fieldname = app.config_fieldname_input.clone(); + app.params.dsd_file = app.config_dsd_input.clone(); + app.screen = Screen::Runtime; + app.start_all_enabled().await; + } + + // Quit + (_, KeyCode::Char('q') | KeyCode::Char('Q')) => { + return true; // signal quit + } + (_, KeyCode::Esc) => { + return true; + } + + _ => {} + } + false +} + +async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers) -> bool { + let visible = app.runtime_visible_indices(); + let sel = app.runtime_selected.min(visible.len().saturating_sub(1)); + let comp_idx = visible.get(sel).copied(); + + match key { + KeyCode::Down | KeyCode::Char('j') => { + app.runtime_selected = (sel + 1).min(visible.len().saturating_sub(1)); + } + KeyCode::Up | KeyCode::Char('k') => { + app.runtime_selected = sel.saturating_sub(1); + } + KeyCode::Char('s') => { + if let Some(idx) = comp_idx { + match app.components[idx].state { + ProcState::Running | ProcState::Stopping => { + app.stop_component(idx).await; + } + ProcState::Idle | ProcState::Stopped | ProcState::Crashed => { + app.components[idx].state = ProcState::Idle; + app.start_component(idx).await; + } + } + } + } + KeyCode::Char('r') => { + if let Some(idx) = comp_idx { + app.stop_component(idx).await; + // Brief delay then restart — we set idle so it auto-starts + // Actually just start immediately; stop sends SIGTERM async + app.components[idx].state = ProcState::Idle; + app.start_component(idx).await; + } + } + KeyCode::Char('l') => { + if let Some(idx) = comp_idx { + app.log_scroll = usize::MAX; // jump to end + { + let logs = app.components[idx].logs.lock().unwrap(); + let len = logs.len(); + drop(logs); + app.log_scroll = len.saturating_sub(1); + } + app.screen = Screen::Logs(idx); + } + } + KeyCode::Char('a') => { + app.start_all_enabled().await; + } + KeyCode::Char('x') => { + app.stop_all().await; + } + KeyCode::Esc => { + // Back to config (ask for quit confirm instead) + app.screen = Screen::Config; + } + KeyCode::Char('q') | KeyCode::Char('Q') => { + return true; + } + _ => {} + } + false +} + +async fn handle_logs_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers, comp_idx: usize) -> bool { + let log_len = app.components[comp_idx].logs.lock().unwrap().len(); + match key { + KeyCode::Down | KeyCode::Char('j') => { + app.log_scroll = (app.log_scroll + 1).min(log_len.saturating_sub(1)); + } + KeyCode::Up | KeyCode::Char('k') => { + app.log_scroll = app.log_scroll.saturating_sub(1); + } + KeyCode::PageDown => { + app.log_scroll = (app.log_scroll + 20).min(log_len.saturating_sub(1)); + } + KeyCode::PageUp => { + app.log_scroll = app.log_scroll.saturating_sub(20); + } + KeyCode::Char('G') => { + app.log_scroll = log_len.saturating_sub(1); + } + KeyCode::Char('g') => { + app.log_scroll = 0; + } + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { + app.screen = Screen::Runtime; + } + _ => {} + } + false +} + +// ─── Terminal cleanup helpers ───────────────────────────────────────────────── + +fn setup_panic_hook() { + let original = std::panic::take_hook(); + std::panic::set_hook(Box::new(move |info| { + // Best-effort cleanup — ignore errors + let _ = disable_raw_mode(); + let _ = execute!( + std::io::stdout(), + LeaveAlternateScreen, + DisableMouseCapture + ); + original(info); + })); +} + +fn cleanup_terminal() { + let _ = disable_raw_mode(); + let _ = execute!( + std::io::stdout(), + LeaveAlternateScreen, + DisableMouseCapture + ); +} + +// ─── Main ───────────────────────────────────────────────────────────────────── + +#[tokio::main] +async fn main() -> Result<()> { + setup_panic_hook(); + + // Setup terminal + enable_raw_mode()?; + let mut stdout = std::io::stdout(); + execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + let backend = CrosstermBackend::new(stdout); + let mut terminal = Terminal::new(backend)?; + + let mut app = App::new(); + let mut event_stream = EventStream::new(); + let mut tick_interval = tokio::time::interval(Duration::from_millis(100)); + + let result = run_loop(&mut terminal, &mut app, &mut event_stream, &mut tick_interval).await; + + // Ensure all children are killed + app.stop_all().await; + // Give them a moment to receive SIGTERM + tokio::time::sleep(Duration::from_millis(300)).await; + // SIGKILL anything still alive (whole process group) + for comp in &app.components { + for &pid in &comp.pids { + unsafe { + libc::kill(-(pid as libc::pid_t), libc::SIGKILL); + } + } + } + + cleanup_terminal(); + result +} + +async fn run_loop( + terminal: &mut Terminal>, + app: &mut App, + event_stream: &mut EventStream, + tick_interval: &mut tokio::time::Interval, +) -> Result<()> { + loop { + terminal.draw(|f| draw(f, app))?; + + tokio::select! { + _ = tick_interval.tick() => { + app.tick_count += 1; + app.drain_messages(); + // Auto-scroll logs to bottom if on log screen + if let Screen::Logs(idx) = &app.screen { + let len = app.components[*idx].logs.lock().unwrap().len(); + // Only auto-scroll if near the bottom + if app.log_scroll + 5 >= len.saturating_sub(1) { + app.log_scroll = len.saturating_sub(1); + } + } + } + + maybe_event = event_stream.next() => { + let Some(Ok(event)) = maybe_event else { break; }; + + if let Event::Key(key_event) = event { + let quit = match app.screen.clone() { + Screen::Config => { + handle_config_key(app, key_event.code, key_event.modifiers).await + } + Screen::Runtime => { + handle_runtime_key(app, key_event.code, key_event.modifiers).await + } + Screen::Logs(idx) => { + handle_logs_key(app, key_event.code, key_event.modifiers, idx).await + } + }; + if quit { + return Ok(()); + } + } + } + + _ = tokio::signal::ctrl_c() => { + return Ok(()); + } + } + } + Ok(()) +} From 6c1ff940b2ac175d04b102ea3048ac4c2fdc85c5 Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Mon, 1 Jun 2026 21:07:48 +0200 Subject: [PATCH 02/48] Cleaned up version --- pixi.toml | 2 +- .../launch/visualization.launch | 41 - .../bitbots_bringup/tui/Cargo.lock | 144 +- .../bitbots_bringup/tui/Cargo.toml | 7 +- .../bitbots_bringup/tui/src/app.rs | 401 +++++ .../bitbots_bringup/tui/src/components.rs | 324 ++++ .../bitbots_bringup/tui/src/input.rs | 164 ++ .../bitbots_bringup/tui/src/main.rs | 1361 ++--------------- .../bitbots_bringup/tui/src/ui.rs | 408 +++++ 9 files changed, 1581 insertions(+), 1271 deletions(-) delete mode 100644 src/bitbots_misc/bitbots_bringup/launch/visualization.launch create mode 100644 src/bitbots_misc/bitbots_bringup/tui/src/app.rs create mode 100644 src/bitbots_misc/bitbots_bringup/tui/src/components.rs create mode 100644 src/bitbots_misc/bitbots_bringup/tui/src/input.rs create mode 100644 src/bitbots_misc/bitbots_bringup/tui/src/ui.rs diff --git a/pixi.toml b/pixi.toml index 59e571be17..cb41ba1d2b 100644 --- a/pixi.toml +++ b/pixi.toml @@ -14,7 +14,7 @@ version = "0.1.0" zenoh = "ros2 run rmw_zenoh_cpp rmw_zenohd" deploy = {cmd = "scripts/deploy_robots.py", description = "Deploys the current environment."} format = {cmd = "pre-commit run --all-files", description = "Runs code formatting and linting."} -teamplayer = { cmd = "cargo run --release --manifest-path src/bitbots_misc/bitbots_bringup/tui/Cargo.toml", description = "Launch the teamplayer TUI (Rust/ratatui)" } +teamplayer = { cmd = "cargo run --release --manifest-path src/bitbots_misc/bitbots_bringup/tui/Cargo.toml --", description = "Launch the main software components" } [tasks.build] # Skipping ZED-camera related packages as they require a local installation of the ZED SDK. diff --git a/src/bitbots_misc/bitbots_bringup/launch/visualization.launch b/src/bitbots_misc/bitbots_bringup/launch/visualization.launch deleted file mode 100644 index 8b4bf73d59..0000000000 --- a/src/bitbots_misc/bitbots_bringup/launch/visualization.launch +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock index e6ea2c6f00..8c6dbbc348 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock @@ -8,6 +8,56 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + [[package]] name = "anyhow" version = "1.0.102" @@ -47,6 +97,52 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "clap" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "compact_str" version = "0.7.1" @@ -213,12 +309,24 @@ dependencies = [ "foldhash", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "itertools" version = "0.12.1" @@ -302,6 +410,23 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + [[package]] name = "parking_lot" version = "0.12.5" @@ -471,6 +596,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strum" version = "0.26.3" @@ -486,7 +617,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -505,13 +636,14 @@ dependencies = [ ] [[package]] -name = "teamplayer-tui" +name = "teamplayer" version = "0.1.0" dependencies = [ "anyhow", + "clap", "crossterm", "futures", - "libc", + "nix", "ratatui", "tokio", ] @@ -573,6 +705,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml index 5f10c415bb..313033333e 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "teamplayer-tui" +name = "teamplayer" version = "0.1.0" edition = "2021" [[bin]] -name = "teamplayer_tui" +name = "teamplayer" path = "src/main.rs" [dependencies] @@ -13,4 +13,5 @@ crossterm = { version = "0.27", features = ["event-stream"] } tokio = { version = "1", features = ["full"] } anyhow = "1" futures = "0.3" -libc = "0.2" +nix = { version = "0.27", features = ["signal", "process"] } +clap = { version = "~4.4", features = ["derive"] } diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs new file mode 100644 index 0000000000..25943bada3 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -0,0 +1,401 @@ +use std::{ + collections::VecDeque, + sync::{Arc, Mutex}, +}; + +use tokio::{ + io::{AsyncBufReadExt, BufReader}, + process::Command, + sync::mpsc, +}; + +pub use crate::components::GlobalParams; +use crate::components::{COMPONENT_DEFS, FIELDNAME_DEFAULT_HW, FIELDNAME_DEFAULT_SIM}; + +// ─── State types ────────────────────────────────────────────────────────────── + +#[derive(Clone, Debug, PartialEq)] +pub enum ProcState { + Idle, + Running, + /// SIGTERM sent, waiting for exit + Stopping, + /// SIGTERM sent, will restart automatically when the process exits + Restarting, + Stopped, + Crashed, +} + +impl ProcState { + pub fn label(&self) -> &'static str { + match self { + ProcState::Idle => "IDLE", + ProcState::Running => "RUN ", + ProcState::Stopping => "STOP", + ProcState::Restarting => "↺ ", + ProcState::Stopped => "DONE", + ProcState::Crashed => "FAIL", + } + } +} + +pub struct ComponentState { + pub comp_idx: usize, + pub enabled: bool, + pub state: ProcState, + pub logs: Arc>>, + pub pids: Vec, + pub task_handles: Vec>, +} + +impl ComponentState { + pub fn new(comp_idx: usize, enabled: bool) -> Self { + Self { + comp_idx, + enabled, + state: ProcState::Idle, + logs: Arc::new(Mutex::new(VecDeque::with_capacity(2000))), + pids: Vec::new(), + task_handles: Vec::new(), + } + } +} + +pub enum AppMsg { + ProcessExited { key: String, code: i32 }, +} + +// ─── Screen / focus ─────────────────────────────────────────────────────────── + +#[derive(PartialEq, Clone)] +pub enum Screen { + Config, + Runtime, + Logs(usize), +} + +#[derive(Clone, PartialEq, Debug)] +pub enum ConfigFocus { + Zenoh, + Sim, + Fieldname, + DsdFile, + Component(usize), + Start, +} + +// ─── App ────────────────────────────────────────────────────────────────────── + +pub struct App { + pub screen: Screen, + pub params: GlobalParams, + pub components: Vec, + pub config_focus: ConfigFocus, + pub config_fieldname_input: String, + pub config_dsd_input: String, + pub runtime_selected: usize, + pub tick_count: u64, + pub msg_tx: mpsc::UnboundedSender, + pub msg_rx: mpsc::UnboundedReceiver, + pub log_scroll: usize, +} + +impl App { + pub fn new() -> Self { + let (msg_tx, msg_rx) = mpsc::unbounded_channel(); + let components: Vec = COMPONENT_DEFS + .iter() + .enumerate() + .map(|(i, def)| { + ComponentState::new(i, if def.sim_component { false } else { def.default_enabled }) + }) + .collect(); + + App { + screen: Screen::Config, + params: GlobalParams::default(), + components, + config_focus: ConfigFocus::Zenoh, + config_fieldname_input: FIELDNAME_DEFAULT_HW.to_string(), + config_dsd_input: "main.dsd".to_string(), + runtime_selected: 0, + tick_count: 0, + msg_tx, + msg_rx, + log_scroll: 0, + } + } + + pub fn apply_cli_presets( + &mut self, + sim: bool, + no_zenoh: bool, + fieldname: Option<&str>, + dsd_file: &str, + enable: &[String], + disable: &[String], + ) { + if sim { + self.params.sim = true; + self.apply_sim_toggle(); + } + if let Some(f) = fieldname { + self.params.fieldname = f.to_string(); + self.config_fieldname_input = f.to_string(); + } + self.params.dsd_file = dsd_file.to_string(); + self.config_dsd_input = dsd_file.to_string(); + + if no_zenoh { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh") { + self.components[idx].enabled = false; + self.params.zenoh = false; + } + } + for key in enable { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == key.as_str()) { + self.components[idx].enabled = true; + } + } + for key in disable { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == key.as_str()) { + self.components[idx].enabled = false; + } + } + } + + pub fn toggleable_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(_, d)| { + !d.infrastructure && !d.sim_component && !(d.hardware_only && self.params.sim) + }) + .map(|(i, _)| i) + .collect() + } + + pub fn config_focus_items(&self) -> Vec { + let mut items = vec![ + ConfigFocus::Zenoh, + ConfigFocus::Sim, + ConfigFocus::Fieldname, + ConfigFocus::DsdFile, + ]; + for i in 0..self.toggleable_indices().len() { + items.push(ConfigFocus::Component(i)); + } + items.push(ConfigFocus::Start); + items + } + + pub fn config_focus_next(&mut self) { + let items = self.config_focus_items(); + let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); + self.config_focus = items[(pos + 1) % items.len()].clone(); + } + + pub fn config_focus_prev(&mut self) { + let items = self.config_focus_items(); + let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); + self.config_focus = items[(pos + items.len() - 1) % items.len()].clone(); + } + + pub fn runtime_visible_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(i, d)| { + if d.sim_component { + return self.params.sim; + } + if d.hardware_only && self.params.sim { + return false; + } + self.components[*i].enabled + }) + .map(|(i, _)| i) + .collect() + } + + pub fn apply_sim_toggle(&mut self) { + let sim = self.params.sim; + for (i, def) in COMPONENT_DEFS.iter().enumerate() { + if def.sim_component { + self.components[i].enabled = sim; + } else if def.hardware_only { + self.components[i].enabled = !sim && def.default_enabled; + } + } + self.config_fieldname_input = + if sim { FIELDNAME_DEFAULT_SIM } else { FIELDNAME_DEFAULT_HW }.to_string(); + self.params.fieldname = self.config_fieldname_input.clone(); + self.config_focus = ConfigFocus::Zenoh; + } + + pub async fn start_component(&mut self, comp_idx: usize) { + let def = &COMPONENT_DEFS[comp_idx]; + let cmds = (def.cmds)(&self.params); + let key = def.key.to_string(); + + let logs = self.components[comp_idx].logs.clone(); + self.components[comp_idx].state = ProcState::Running; + self.components[comp_idx].pids.clear(); + self.components[comp_idx].task_handles.clear(); + + for cmd_args in cmds { + if cmd_args.is_empty() { + continue; + } + let tx = self.msg_tx.clone(); + let logs = logs.clone(); + let key = key.clone(); + + let mut child = match Command::new(&cmd_args[0]) + .args(&cmd_args[1..]) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + .process_group(0) + .kill_on_drop(true) + .spawn() + { + Ok(c) => c, + Err(e) => { + let mut l = logs.lock().unwrap(); + l.push_back(format!("[ERROR] spawn failed: {e}")); + drop(l); + let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); + return; + } + }; + + if let Some(pid) = child.id() { + self.components[comp_idx].pids.push(pid); + } + + let stdout = child.stdout.take().map(BufReader::new); + let stderr = child.stderr.take().map(BufReader::new); + + let handle = tokio::spawn(async move { + async fn pump( + mut r: BufReader, + logs: Arc>>, + prefix: &str, + ) { + let mut line = String::new(); + while let Ok(n) = r.read_line(&mut line).await { + if n == 0 { + break; + } + let entry = format!("{}{}", prefix, line.trim_end_matches('\n')); + let mut l = logs.lock().unwrap(); + if l.len() >= 2000 { + l.pop_front(); + } + l.push_back(entry); + line.clear(); + } + } + if let Some(r) = stdout { + pump(r, logs.clone(), "").await; + } + if let Some(r) = stderr { + pump(r, logs.clone(), "[ERR] ").await; + } + let code = child + .wait() + .await + .map(|s| s.code().unwrap_or(-1)) + .unwrap_or(-1); + let _ = tx.send(AppMsg::ProcessExited { key, code }); + }); + self.components[comp_idx].task_handles.push(handle); + } + } + + /// Send SIGTERM to the component's direct child processes and mark as Stopping. + pub async fn stop_component(&mut self, comp_idx: usize) { + match self.components[comp_idx].state { + ProcState::Running => { + sigterm_pids(&self.components[comp_idx].pids); + self.components[comp_idx].state = ProcState::Stopping; + } + ProcState::Restarting => { + // Already sent SIGTERM — cancel the pending restart + self.components[comp_idx].state = ProcState::Stopping; + } + _ => {} + } + } + + /// Send SIGTERM and mark as Restarting — will auto-restart when the process exits. + pub fn restart_component(&mut self, comp_idx: usize) { + if self.components[comp_idx].state != ProcState::Running { + return; + } + sigterm_pids(&self.components[comp_idx].pids); + self.components[comp_idx].state = ProcState::Restarting; + } + + pub async fn stop_all(&mut self) { + for i in 0..self.components.len() { + self.stop_component(i).await; + } + } + + pub async fn start_all_enabled(&mut self) { + let enabled: Vec = self + .components + .iter() + .enumerate() + .filter(|(_, c)| c.enabled && c.state == ProcState::Idle) + .map(|(i, _)| i) + .collect(); + for i in enabled { + self.start_component(i).await; + } + } + + /// Drain the message queue and return the indices of components that need restarting. + pub fn drain_messages(&mut self) -> Vec { + let mut to_restart = Vec::new(); + while let Ok(msg) = self.msg_rx.try_recv() { + match msg { + AppMsg::ProcessExited { key, code } => { + if let Some((idx, comp)) = self + .components + .iter_mut() + .enumerate() + .find(|(_, c)| COMPONENT_DEFS[c.comp_idx].key == key) + { + match comp.state { + ProcState::Restarting => { + comp.pids.clear(); + comp.state = ProcState::Idle; + to_restart.push(idx); + } + ProcState::Stopping | ProcState::Running => { + comp.state = if code == 0 { + ProcState::Stopped + } else { + ProcState::Crashed + }; + comp.pids.clear(); + } + _ => {} + } + } + } + } + } + to_restart + } +} + +fn sigterm_pids(pids: &[u32]) { + use nix::sys::signal::{killpg, Signal}; + use nix::unistd::Pid; + for &pid in pids { + let _ = killpg(Pid::from_raw(pid as i32), Signal::SIGTERM); + } +} diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs new file mode 100644 index 0000000000..0045e8cb0b --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs @@ -0,0 +1,324 @@ +// ─── Global params ──────────────────────────────────────────────────────────── + +pub const FIELDNAME_DEFAULT_HW: &str = "labor"; +pub const FIELDNAME_DEFAULT_SIM: &str = "hsl_kid"; + +#[derive(Clone, Debug)] +pub struct GlobalParams { + pub sim: bool, + pub zenoh: bool, + pub fieldname: String, + pub dsd_file: String, +} + +impl Default for GlobalParams { + fn default() -> Self { + Self { + sim: false, + zenoh: true, + fieldname: FIELDNAME_DEFAULT_HW.to_string(), + dsd_file: "main.dsd".to_string(), + } + } +} + +// ─── Component definitions ──────────────────────────────────────────────────── + +pub struct ComponentDef { + pub name: &'static str, + pub key: &'static str, + pub default_enabled: bool, + pub infrastructure: bool, + /// Only valid on real hardware — hidden/disabled in sim + pub hardware_only: bool, + /// Only shown/started when sim mode is active (e.g. the simulator itself) + pub sim_component: bool, + /// Returns the list of commands to spawn for this component + pub cmds: fn(&GlobalParams) -> Vec>, +} + +// ─── Command helpers ────────────────────────────────────────────────────────── + +pub fn ros2_launch(pkg: &str, file: &str, extra: &[&str]) -> Vec { + let mut v = vec![ + "ros2".into(), + "launch".into(), + pkg.into(), + file.into(), + ]; + v.extend(extra.iter().map(|s| s.to_string())); + v +} + +pub fn ros2_run(pkg: &str, exec: &str, extra: &[&str]) -> Vec { + let mut v = vec![ + "ros2".into(), + "run".into(), + pkg.into(), + exec.into(), + ]; + v.extend(extra.iter().map(|s| s.to_string())); + v +} + +fn sim(p: &GlobalParams) -> String { + format!("sim:={}", p.sim) +} + +// ─── Static component registry ──────────────────────────────────────────────── + +pub static COMPONENT_DEFS: &[ComponentDef] = &[ + // ── Infrastructure (always started) ────────────────────────────────────── + ComponentDef { + name: "Zenoh", + key: "zenoh", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_run("rmw_zenoh_cpp", "rmw_zenohd", &[])], + }, + ComponentDef { + name: "Param Blackboard", + key: "blackboard", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_parameter_blackboard", + "parameter_blackboard.launch", + &[&sim(p), &format!("fieldname:={}", p.fieldname)], + )] + }, + }, + ComponentDef { + name: "Robot Description", + key: "robot_description", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_robot_description", + "load_robot_description.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Diagnostics", + key: "diagnostics", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_diagnostic", "aggregator.launch", &[])], + }, + ComponentDef { + name: "Simulator", + key: "simulator", + default_enabled: false, + infrastructure: true, + hardware_only: false, + sim_component: true, + cmds: |p| { + vec![ros2_launch( + "bitbots_bringup", + "mujoco_simulation.launch.py", + &[&sim(p)], + )] + }, + }, + // ── User-toggleable ─────────────────────────────────────────────────────── + ComponentDef { + name: "Lowlevel", + key: "lowlevel", + default_enabled: true, + infrastructure: false, + hardware_only: true, + sim_component: false, + cmds: |_| vec![ros2_launch("livelybot_bringup", "lowlevel.launch", &[])], + }, + ComponentDef { + name: "Motion", + key: "motion", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| vec![ros2_launch("bitbots_bringup", "motion.launch", &[&sim(p)])], + }, + ComponentDef { + name: "Game Controller", + key: "game_controller", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "game_controller_hsl", + "game_controller.launch", + &[ + &sim(p), + "use_parameter_blackboard:=true", + "parameter_blackboard_name:=parameter_blackboard", + "team_id_param_name:=team_id", + "bot_id_param_name:=bot_id", + ], + )] + }, + }, + ComponentDef { + name: "Vision", + key: "vision", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| vec![ros2_launch("bitbots_bringup", "vision.launch", &[&sim(p)])], + }, + ComponentDef { + name: "IPM", + key: "ipm", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| vec![ros2_launch("bitbots_ipm", "ipm.launch", &[&sim(p)])], + }, + ComponentDef { + name: "Localization", + key: "localization", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_localization", + "localization.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Path Planning", + key: "path_planning", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_path_planning", + "path_planning.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Behavior", + key: "behavior", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_body_behavior", + "behavior.launch", + &[&sim(p), &format!("dsd_file:={}", p.dsd_file)], + )] + }, + }, + ComponentDef { + name: "Team Comm", + key: "teamcom", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_team_communication", + "team_comm.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "World Model", + key: "world_model", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ + ros2_launch("bitbots_ball_filter", "ball_filter.launch", &[&sim(p)]), + ros2_launch("bitbots_robot_filter", "robot_filter.launch", &[&sim(p)]), + ] + }, + }, + ComponentDef { + name: "Whistle Det.", + key: "whistle_detector", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| { + vec![ros2_launch( + "bitbots_whistle_detector", + "whistle_detector.launch", + &[], + )] + }, + }, + ComponentDef { + name: "Audio", + key: "audio", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_bringup", "audio.launch", &[])], + }, + ComponentDef { + name: "TTS", + key: "tts", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_tts", "tts.launch", &[])], + }, + ComponentDef { + name: "Monitoring", + key: "monitoring", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_bringup", "monitoring.launch", &[])], + }, + ComponentDef { + name: "Recording", + key: "record", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_bringup", + "rosbag_record.launch.py", + &[&sim(p)], + )] + }, + }, +]; diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs new file mode 100644 index 0000000000..356d019ba9 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -0,0 +1,164 @@ +use crossterm::event::{KeyCode, KeyModifiers}; + +use crate::app::{App, ConfigFocus, ProcState, Screen}; +use crate::components::COMPONENT_DEFS; + +pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { + match (&app.config_focus.clone(), key) { + // Navigation + (_, KeyCode::Tab) => { + if modifiers.contains(KeyModifiers::SHIFT) { + app.config_focus_prev(); + } else { + app.config_focus_next(); + } + } + (_, KeyCode::Down) => app.config_focus_next(), + (_, KeyCode::Up) => app.config_focus_prev(), + + // Zenoh toggle + (ConfigFocus::Zenoh, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.zenoh = !app.params.zenoh; + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh") { + app.components[idx].enabled = app.params.zenoh; + } + } + + // Sim toggle + (ConfigFocus::Sim, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.sim = !app.params.sim; + app.apply_sim_toggle(); + } + + // Fieldname text input + (ConfigFocus::Fieldname, KeyCode::Char(c)) => { + if !modifiers.contains(KeyModifiers::CONTROL) { + app.config_fieldname_input.push(c); + app.params.fieldname = app.config_fieldname_input.clone(); + } + } + (ConfigFocus::Fieldname, KeyCode::Backspace) => { + app.config_fieldname_input.pop(); + app.params.fieldname = app.config_fieldname_input.clone(); + } + + // DSD file text input + (ConfigFocus::DsdFile, KeyCode::Char(c)) => { + if !modifiers.contains(KeyModifiers::CONTROL) { + app.config_dsd_input.push(c); + app.params.dsd_file = app.config_dsd_input.clone(); + } + } + (ConfigFocus::DsdFile, KeyCode::Backspace) => { + app.config_dsd_input.pop(); + app.params.dsd_file = app.config_dsd_input.clone(); + } + + // Component checkbox toggle + (ConfigFocus::Component(fi), KeyCode::Char(' ') | KeyCode::Enter) => { + let fi = *fi; + let toggleables = app.toggleable_indices(); + if fi < toggleables.len() { + let comp_idx = toggleables[fi]; + app.components[comp_idx].enabled = !app.components[comp_idx].enabled; + } + } + + // Start / Continue button + (ConfigFocus::Start, KeyCode::Enter | KeyCode::Char(' ')) => { + app.params.fieldname = app.config_fieldname_input.clone(); + app.params.dsd_file = app.config_dsd_input.clone(); + app.screen = Screen::Runtime; + app.start_all_enabled().await; + } + + // Quit + (_, KeyCode::Char('q') | KeyCode::Char('Q') | KeyCode::Esc) => return true, + + _ => {} + } + false +} + +pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers) -> bool { + let visible = app.runtime_visible_indices(); + let sel = app.runtime_selected.min(visible.len().saturating_sub(1)); + let comp_idx = visible.get(sel).copied(); + + match key { + KeyCode::Down | KeyCode::Char('j') => { + app.runtime_selected = (sel + 1).min(visible.len().saturating_sub(1)); + } + KeyCode::Up | KeyCode::Char('k') => { + app.runtime_selected = sel.saturating_sub(1); + } + + KeyCode::Char('s') => { + if let Some(idx) = comp_idx { + match app.components[idx].state { + ProcState::Running | ProcState::Stopping | ProcState::Restarting => { + app.stop_component(idx).await; + } + _ => { + app.components[idx].state = ProcState::Idle; + app.start_component(idx).await; + } + } + } + } + + KeyCode::Char('r') => { + if let Some(idx) = comp_idx { + match app.components[idx].state { + ProcState::Running => app.restart_component(idx), + ProcState::Stopping | ProcState::Restarting => {} // already terminating + _ => app.start_component(idx).await, + } + } + } + + KeyCode::Char('l') => { + if let Some(idx) = comp_idx { + app.log_scroll = app.components[idx].logs.lock().unwrap().len().saturating_sub(1); + app.screen = Screen::Logs(idx); + } + } + + KeyCode::Char('a') => app.start_all_enabled().await, + KeyCode::Char('x') => app.stop_all().await, + KeyCode::Esc => app.screen = Screen::Config, + KeyCode::Char('q') | KeyCode::Char('Q') => return true, + _ => {} + } + false +} + +pub async fn handle_logs_key( + app: &mut App, + key: KeyCode, + _modifiers: KeyModifiers, + comp_idx: usize, +) -> bool { + let log_len = app.components[comp_idx].logs.lock().unwrap().len(); + match key { + KeyCode::Down | KeyCode::Char('j') => { + app.log_scroll = (app.log_scroll + 1).min(log_len.saturating_sub(1)); + } + KeyCode::Up | KeyCode::Char('k') => { + app.log_scroll = app.log_scroll.saturating_sub(1); + } + KeyCode::PageDown => { + app.log_scroll = (app.log_scroll + 20).min(log_len.saturating_sub(1)); + } + KeyCode::PageUp => { + app.log_scroll = app.log_scroll.saturating_sub(20); + } + KeyCode::Char('G') => app.log_scroll = log_len.saturating_sub(1), + KeyCode::Char('g') => app.log_scroll = 0, + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { + app.screen = Screen::Runtime; + } + _ => {} + } + false +} diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs index 08af368224..ef259cb682 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -1,1211 +1,70 @@ -use std::{ - collections::VecDeque, - sync::{Arc, Mutex}, - time::Duration, -}; +mod app; +mod components; +mod input; +mod ui; use anyhow::Result; +use clap::Parser; use crossterm::{ - event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream, KeyCode, KeyModifiers}, + event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }; use futures::StreamExt; -use ratatui::{ - backend::CrosstermBackend, - layout::{Alignment, Constraint, Direction, Layout, Rect}, - style::{Color, Modifier, Style}, - text::{Line, Span}, - widgets::{Block, Borders, Paragraph}, - Frame, Terminal, -}; -use tokio::{ - io::{AsyncBufReadExt, BufReader}, - process::Command, - sync::mpsc, -}; - -// ─── Types ──────────────────────────────────────────────────────────────────── - -#[derive(Clone, Debug, PartialEq)] -enum ProcState { - Idle, - Running, - Stopping, - Stopped, - Crashed, -} - -impl ProcState { - fn label(&self) -> &'static str { - match self { - ProcState::Idle => "IDLE", - ProcState::Running => "RUN ", - ProcState::Stopping => "STOP", - ProcState::Stopped => "DONE", - ProcState::Crashed => "FAIL", - } - } - fn style(&self) -> Style { - match self { - ProcState::Idle => Style::default().fg(Color::DarkGray), - ProcState::Running => Style::default().fg(Color::Green), - ProcState::Stopping => Style::default().fg(Color::Yellow), - ProcState::Stopped => Style::default().fg(Color::Blue), - ProcState::Crashed => Style::default().fg(Color::Red), - } - } -} - -#[derive(Clone, Debug)] -struct GlobalParams { +use ratatui::{backend::CrosstermBackend, Terminal}; +use std::time::Duration; +use tokio::time; + +use app::{App, ProcState, Screen}; +use components::COMPONENT_DEFS; + +// ─── CLI ────────────────────────────────────────────────────────────────────── + +#[derive(Parser)] +#[command( + name = "teamplayer", + about = "Bit-Bots teamplayer launcher — interactive TUI or headless mode", + long_about = None, +)] +struct Cli { + /// Run without TUI: start all enabled components and block until Ctrl-C + #[arg(long)] + headless: bool, + + /// Enable simulation mode (also enables the simulator, disables hardware-only components) + #[arg(long)] sim: bool, - zenoh: bool, - fieldname: String, - dsd_file: String, -} - -impl Default for GlobalParams { - fn default() -> Self { - Self { - sim: false, - zenoh: true, - fieldname: String::new(), - dsd_file: "main.dsd".to_string(), - } - } -} - -struct ComponentDef { - name: &'static str, - key: &'static str, - default_enabled: bool, - infrastructure: bool, - /// Component is only valid on real hardware — hidden/disabled when sim=true - hardware_only: bool, - cmds: fn(&GlobalParams) -> Vec>, -} - -struct ComponentState { - def_idx: usize, - enabled: bool, - state: ProcState, - logs: Arc>>, - pids: Vec, - task_handles: Vec>, -} - -impl ComponentState { - fn new(def_idx: usize, enabled: bool) -> Self { - Self { - def_idx, - enabled, - state: ProcState::Idle, - logs: Arc::new(Mutex::new(VecDeque::with_capacity(2000))), - pids: Vec::new(), - task_handles: Vec::new(), - } - } -} - -enum AppMsg { - ProcessExited { key: String, code: i32 }, -} - -// ─── Component definitions ──────────────────────────────────────────────────── - -fn make_ros2_launch(pkg: &str, file: &str, extra: &[&str]) -> Vec { - let mut cmd = vec![ - "ros2".to_string(), - "launch".to_string(), - pkg.to_string(), - file.to_string(), - ]; - for e in extra { - cmd.push(e.to_string()); - } - cmd -} - -fn make_ros2_run(pkg: &str, exec: &str, extra: &[&str]) -> Vec { - let mut cmd = vec![ - "ros2".to_string(), - "run".to_string(), - pkg.to_string(), - exec.to_string(), - ]; - for e in extra { - cmd.push(e.to_string()); - } - cmd -} - -fn sim_arg(params: &GlobalParams) -> String { - format!("sim:={}", params.sim) -} - -static COMPONENT_DEFS: &[ComponentDef] = &[ - // ── Infrastructure (always started) ── - ComponentDef { - name: "Zenoh", - key: "zenoh", - default_enabled: true, - infrastructure: true, - hardware_only: false, - cmds: |_p| vec![make_ros2_run("rmw_zenoh_cpp", "rmw_zenohd", &[])], - }, - ComponentDef { - name: "Param Blackboard", - key: "blackboard", - default_enabled: true, - infrastructure: true, - hardware_only: false, - cmds: |_p| { - vec![make_ros2_run( - "parameter_blackboard", - "parameter_blackboard", - &["--ros-args", "-p", "use_sim_time:=false"], - )] - }, - }, - ComponentDef { - name: "Robot Description", - key: "robot_description", - default_enabled: true, - infrastructure: true, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_bringup", - "robot_description.launch", - &[&sim_arg(p)], - )] - }, - }, - ComponentDef { - name: "Diagnostics", - key: "diagnostics", - default_enabled: true, - infrastructure: true, - hardware_only: false, - cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "diagnostics.launch", &[])], - }, - ComponentDef { - name: "Simulator", - key: "simulator", - default_enabled: false, - infrastructure: true, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_bringup", - "mujoco_simulation.launch.py", - &[&sim_arg(p)], - )] - }, - }, - // ── User-toggleable ── - ComponentDef { - name: "Lowlevel", - key: "lowlevel", - default_enabled: true, - infrastructure: false, - hardware_only: true, // hardware interface — never in sim - cmds: |_p| vec![make_ros2_launch("livelybot_bringup", "lowlevel.launch", &[])], - }, - ComponentDef { - name: "Motion", - key: "motion", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_bringup", - "motion.launch", - &[&sim_arg(p)], - )] - }, - }, - ComponentDef { - name: "Game Controller", - key: "game_controller", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "game_controller_hsl", - "game_controller.launch", - &[ - &sim_arg(p), - "use_parameter_blackboard:=true", - "parameter_blackboard_name:=parameter_blackboard", - "team_id_param_name:=team_id", - "bot_id_param_name:=bot_id", - ], - )] - }, - }, - ComponentDef { - name: "Vision", - key: "vision", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch("bitbots_bringup", "vision.launch", &[&sim_arg(p)])] - }, - }, - ComponentDef { - name: "IPM", - key: "ipm", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch("bitbots_ipm", "ipm.launch", &[&sim_arg(p)])] - }, - }, - ComponentDef { - name: "Localization", - key: "localization", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_localization", - "localization.launch", - &[&sim_arg(p)], - )] - }, - }, - ComponentDef { - name: "Path Planning", - key: "path_planning", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_path_planning", - "path_planning.launch", - &[&sim_arg(p)], - )] - }, - }, - ComponentDef { - name: "Behavior", - key: "behavior", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_body_behavior", - "behavior.launch", - &[&sim_arg(p), &format!("dsd_file:={}", p.dsd_file)], - )] - }, - }, - ComponentDef { - name: "Team Comm", - key: "teamcom", - default_enabled: false, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_team_communication", - "team_comm.launch", - &[&sim_arg(p)], - )] - }, - }, - ComponentDef { - name: "World Model", - key: "world_model", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![ - make_ros2_launch("bitbots_ball_filter", "ball_filter.launch", &[&sim_arg(p)]), - make_ros2_launch("bitbots_robot_filter", "robot_filter.launch", &[&sim_arg(p)]), - ] - }, - }, - ComponentDef { - name: "Whistle Det.", - key: "whistle_detector", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |_p| { - vec![make_ros2_launch( - "bitbots_whistle_detector", - "whistle_detector.launch", - &[], - )] - }, - }, - ComponentDef { - name: "Audio", - key: "audio", - default_enabled: true, - infrastructure: false, - hardware_only: false, - cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "audio.launch", &[])], - }, - ComponentDef { - name: "TTS", - key: "tts", - default_enabled: false, - infrastructure: false, - hardware_only: false, - cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "tts.launch", &[])], - }, - ComponentDef { - name: "Monitoring", - key: "monitoring", - default_enabled: false, - infrastructure: false, - hardware_only: false, - cmds: |_p| vec![make_ros2_launch("bitbots_bringup", "monitoring.launch", &[])], - }, - ComponentDef { - name: "Recording", - key: "record", - default_enabled: false, - infrastructure: false, - hardware_only: false, - cmds: |p| { - vec![make_ros2_launch( - "bitbots_bringup", - "record.launch", - &[&format!("fieldname:={}", p.fieldname)], - )] - }, - }, -]; - -// ─── Screens ────────────────────────────────────────────────────────────────── - -#[derive(PartialEq, Clone)] -enum Screen { - Config, - Runtime, - Logs(usize), // component index -} - -// Config screen focus items -#[derive(Clone, PartialEq, Debug)] -enum ConfigFocus { - Zenoh, - Sim, - Fieldname, - DsdFile, - Component(usize), // index into toggleable components list - Start, -} - -// ─── App state ──────────────────────────────────────────────────────────────── - -struct App { - screen: Screen, - params: GlobalParams, - components: Vec, - config_focus: ConfigFocus, - config_fieldname_input: String, - config_dsd_input: String, - runtime_selected: usize, - tick_count: u64, - msg_tx: mpsc::UnboundedSender, - msg_rx: mpsc::UnboundedReceiver, - log_scroll: usize, -} - -impl App { - fn new() -> Self { - let (msg_tx, msg_rx) = mpsc::unbounded_channel(); - let mut components: Vec = COMPONENT_DEFS - .iter() - .enumerate() - .map(|(i, def)| ComponentState::new(i, def.default_enabled)) - .collect(); - - // Simulator is only enabled when sim=true - let sim_idx = COMPONENT_DEFS.iter().position(|d| d.key == "simulator").unwrap(); - components[sim_idx].enabled = false; - - App { - screen: Screen::Config, - params: GlobalParams::default(), - components, - config_focus: ConfigFocus::Zenoh, - config_fieldname_input: String::new(), - config_dsd_input: "main.dsd".to_string(), - runtime_selected: 0, - tick_count: 0, - msg_tx, - msg_rx, - log_scroll: 0, - } - } - - fn toggleable_indices(&self) -> Vec { - COMPONENT_DEFS - .iter() - .enumerate() - .filter(|(_, d)| !d.infrastructure && !(d.hardware_only && self.params.sim)) - .map(|(i, _)| i) - .collect() - } - - fn config_focus_items(&self) -> Vec { - let mut items = vec![ConfigFocus::Zenoh, ConfigFocus::Sim, ConfigFocus::Fieldname, ConfigFocus::DsdFile]; - let toggleables = self.toggleable_indices(); - for i in 0..toggleables.len() { - items.push(ConfigFocus::Component(i)); - } - items.push(ConfigFocus::Start); - items - } - - fn config_focus_next(&mut self) { - let items = self.config_focus_items(); - let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); - self.config_focus = items[(pos + 1) % items.len()].clone(); - } - - fn config_focus_prev(&mut self) { - let items = self.config_focus_items(); - let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); - self.config_focus = items[(pos + items.len() - 1) % items.len()].clone(); - } - - fn runtime_visible_indices(&self) -> Vec { - COMPONENT_DEFS - .iter() - .enumerate() - .filter(|(i, d)| { - // Simulator row only appears when sim=true - if d.key == "simulator" { - return self.params.sim; - } - // Hardware-only components are never shown in sim - if d.hardware_only && self.params.sim { - return false; - } - self.components[*i].enabled - }) - .map(|(i, _)| i) - .collect() - } - - async fn start_component(&mut self, comp_idx: usize) { - let def = &COMPONENT_DEFS[comp_idx]; - let cmds = (def.cmds)(&self.params); - let key = def.key.to_string(); - - // Extract what we need before the loop so we don't hold &mut self.components - let logs = self.components[comp_idx].logs.clone(); - self.components[comp_idx].state = ProcState::Running; - self.components[comp_idx].pids.clear(); - self.components[comp_idx].task_handles.clear(); - - for cmd_args in cmds { - if cmd_args.is_empty() { - continue; - } - let tx = self.msg_tx.clone(); - let logs = logs.clone(); - let key = key.clone(); - - let mut child = match Command::new(&cmd_args[0]) - .args(&cmd_args[1..]) - .stdout(std::process::Stdio::piped()) - .stderr(std::process::Stdio::piped()) - // New process group so we can kill the entire ros2 launch tree - .process_group(0) - .kill_on_drop(true) - .spawn() - { - Ok(c) => c, - Err(e) => { - let mut l = logs.lock().unwrap(); - l.push_back(format!("[ERROR] spawn failed: {e}")); - drop(l); - let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); - return; - } - }; - - if let Some(pid) = child.id() { - self.components[comp_idx].pids.push(pid); - } - - let stdout = child.stdout.take().map(BufReader::new); - let stderr = child.stderr.take().map(BufReader::new); - - let handle = tokio::spawn(async move { - // Interleave stdout+stderr into log buffer - if let Some(mut reader) = stdout { - let mut line = String::new(); - while let Ok(n) = reader.read_line(&mut line).await { - if n == 0 { break; } - let trimmed = line.trim_end_matches('\n').to_string(); - let mut l = logs.lock().unwrap(); - if l.len() >= 2000 { l.pop_front(); } - l.push_back(trimmed); - line.clear(); - } - } - if let Some(mut reader) = stderr { - let mut line = String::new(); - while let Ok(n) = reader.read_line(&mut line).await { - if n == 0 { break; } - let trimmed = format!("[ERR] {}", line.trim_end_matches('\n')); - let mut l = logs.lock().unwrap(); - if l.len() >= 2000 { l.pop_front(); } - l.push_back(trimmed); - line.clear(); - } - } - let code = child.wait().await.map(|s| s.code().unwrap_or(-1)).unwrap_or(-1); - let _ = tx.send(AppMsg::ProcessExited { key, code }); - }); - self.components[comp_idx].task_handles.push(handle); - } - } - - async fn stop_component(&mut self, comp_idx: usize) { - let comp = &mut self.components[comp_idx]; - if comp.state != ProcState::Running { - return; - } - comp.state = ProcState::Stopping; - let pids = comp.pids.clone(); - for &pid in &pids { - unsafe { - // Negative PID = send to entire process group (kills ros2 launch children too) - libc::kill(-(pid as libc::pid_t), libc::SIGTERM); - } - } - tokio::spawn(async move { - tokio::time::sleep(Duration::from_secs(5)).await; - for pid in pids { - unsafe { - libc::kill(-(pid as libc::pid_t), libc::SIGKILL); - } - } - }); - } - - async fn stop_all(&mut self) { - let indices: Vec = (0..self.components.len()).collect(); - for i in indices { - if self.components[i].state == ProcState::Running { - self.stop_component(i).await; - } - } - } - - async fn start_all_enabled(&mut self) { - let enabled: Vec = self.components - .iter() - .enumerate() - .filter(|(_, c)| c.enabled && c.state == ProcState::Idle) - .map(|(i, _)| i) - .collect(); - for i in enabled { - self.start_component(i).await; - } - } - - fn drain_messages(&mut self) { - while let Ok(msg) = self.msg_rx.try_recv() { - match msg { - AppMsg::ProcessExited { key, code } => { - if let Some(comp) = self.components.iter_mut().find(|c| { - COMPONENT_DEFS[c.def_idx].key == key - }) { - if comp.state == ProcState::Stopping || comp.state == ProcState::Running { - comp.state = if code == 0 { - ProcState::Stopped - } else { - ProcState::Crashed - }; - comp.pids.clear(); - } - } - } - } - } - } -} - -// ─── Rendering ──────────────────────────────────────────────────────────────── - -const BANNER: &str = r#" - ██████╗ ██╗████████╗ ██████╗ ██████╗ ████████╗███████╗ - ██╔══██╗██║╚══██╔══╝ ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝ - ██████╔╝██║ ██║ ██████╔╝██║ ██║ ██║ ███████╗ - ██╔══██╗██║ ██║ ██╔══██╗██║ ██║ ██║ ╚════██║ - ██████╔╝██║ ██║ ██████╔╝╚██████╔╝ ██║ ███████║ - ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ - Teamplayer Launcher -"#; - -fn spinner_char(tick: u64) -> char { - const FRAMES: &[char] = &['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; - FRAMES[(tick as usize) % FRAMES.len()] -} - -fn draw(f: &mut Frame, app: &App) { - match &app.screen { - Screen::Config => draw_config(f, app), - Screen::Runtime => draw_runtime(f, app), - Screen::Logs(idx) => draw_logs(f, app, *idx), - } -} - -fn draw_config(f: &mut Frame, app: &App) { - let area = f.size(); - - let banner_lines = BANNER.lines().count() as u16; - - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints([ - Constraint::Length(banner_lines), - Constraint::Length(3), // global flags bar - Constraint::Min(0), // component grid - Constraint::Length(3), // Start/Continue button - Constraint::Length(1), // footer - ]) - .split(area); - - let banner = Paragraph::new(BANNER) - .style(Style::default().fg(Color::Cyan)) - .alignment(Alignment::Center); - f.render_widget(banner, chunks[0]); - - draw_config_flags(f, app, chunks[1]); - draw_config_components(f, app, chunks[2]); - draw_start_button(f, app, chunks[3]); - - let footer = Paragraph::new( - " Tab/↑↓: navigate Space/Enter: toggle/select q: quit", - ) - .style(Style::default().fg(Color::DarkGray)); - f.render_widget(footer, chunks[4]); -} - -fn draw_start_button(f: &mut Frame, app: &App, area: Rect) { - let focused = app.config_focus == ConfigFocus::Start; - let has_running = app.components.iter().any(|c| c.state == ProcState::Running); - - let label = if has_running { " Continue → " } else { " Launch → " }; - - let (border_style, text_style) = if focused { - ( - Style::default().fg(Color::Yellow), - Style::default() - .fg(Color::Yellow) - .add_modifier(Modifier::BOLD), - ) - } else { - ( - Style::default().fg(Color::Green), - Style::default().fg(Color::Green).add_modifier(Modifier::BOLD), - ) - }; - - let button = Paragraph::new(label) - .block(Block::default().borders(Borders::ALL).border_style(border_style)) - .style(text_style) - .alignment(Alignment::Center); - f.render_widget(button, area); -} - -fn draw_config_flags(f: &mut Frame, app: &App, area: Rect) { - let chunks = Layout::default() - .direction(Direction::Horizontal) - .constraints([ - Constraint::Length(18), // Zenoh - Constraint::Length(18), // Sim - Constraint::Min(20), // Fieldname - Constraint::Min(20), // DSD file - ]) - .split(area); - - let zenoh_focused = app.config_focus == ConfigFocus::Zenoh; - let sim_focused = app.config_focus == ConfigFocus::Sim; - let field_focused = app.config_focus == ConfigFocus::Fieldname; - let dsd_focused = app.config_focus == ConfigFocus::DsdFile; - - let zenoh_style = if zenoh_focused { - Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD) - } else { - Style::default().fg(Color::White) - }; - let zenoh_text = if app.params.zenoh { "[✓] Zenoh" } else { "[ ] Zenoh" }; - let zenoh_p = Paragraph::new(zenoh_text) - .block(Block::default().borders(Borders::ALL).border_style(if zenoh_focused { - Style::default().fg(Color::Yellow) - } else { - Style::default() - })) - .style(zenoh_style); - f.render_widget(zenoh_p, chunks[0]); - - let sim_style = if sim_focused { - Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD) - } else { - Style::default().fg(Color::White) - }; - let sim_text = if app.params.sim { "[✓] Simulator" } else { "[ ] Simulator" }; - let sim_p = Paragraph::new(sim_text) - .block(Block::default().borders(Borders::ALL).border_style(if sim_focused { - Style::default().fg(Color::Yellow) - } else { - Style::default() - })) - .style(sim_style); - f.render_widget(sim_p, chunks[1]); - - let field_p = Paragraph::new(app.config_fieldname_input.as_str()) - .block(Block::default().borders(Borders::ALL).title("Fieldname").border_style(if field_focused { - Style::default().fg(Color::Yellow) - } else { - Style::default() - })); - f.render_widget(field_p, chunks[2]); - let dsd_p = Paragraph::new(app.config_dsd_input.as_str()) - .block(Block::default().borders(Borders::ALL).title("DSD File").border_style(if dsd_focused { - Style::default().fg(Color::Yellow) - } else { - Style::default() - })); - f.render_widget(dsd_p, chunks[3]); -} - -fn draw_config_components(f: &mut Frame, app: &App, area: Rect) { - let toggleables = app.toggleable_indices(); - - // Split into two columns - let col_chunks = Layout::default() - .direction(Direction::Horizontal) - .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) - .split(area); - - let left_count = (toggleables.len() + 1) / 2; - let (left_indices, right_indices) = toggleables.split_at(left_count); - - draw_component_column(f, app, col_chunks[0], left_indices, 0); - draw_component_column(f, app, col_chunks[1], right_indices, left_indices.len()); -} - -fn draw_component_column( - f: &mut Frame, - app: &App, - area: Rect, - comp_indices: &[usize], - focus_offset: usize, -) { - let rows: Vec = comp_indices - .iter() - .map(|_| Constraint::Length(1)) - .collect(); - if rows.is_empty() { - return; - } - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints(rows) - .split(area); - - for (local_i, &comp_idx) in comp_indices.iter().enumerate() { - let focus_i = focus_offset + local_i; - let focused = app.config_focus == ConfigFocus::Component(focus_i); - let comp = &app.components[comp_idx]; - let def = &COMPONENT_DEFS[comp_idx]; - - let check = if comp.enabled { "✓" } else { " " }; - let text = format!("[{}] {}", check, def.name); - - let style = if focused { - Style::default() - .fg(Color::Yellow) - .add_modifier(Modifier::BOLD) - } else if comp.enabled { - Style::default().fg(Color::White) - } else { - Style::default().fg(Color::DarkGray) - }; - - let p = Paragraph::new(text).style(style); - if local_i < chunks.len() { - f.render_widget(p, chunks[local_i]); - } - } - - // Start button at bottom of right column - // (handled separately in draw_config) -} - -fn draw_runtime(f: &mut Frame, app: &App) { - let area = f.size(); - - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints([ - Constraint::Length(3), // header - Constraint::Min(0), // component list - Constraint::Length(1), // footer - ]) - .split(area); - - // Header - draw_runtime_header(f, app, chunks[0]); - - // Component list - draw_runtime_list(f, app, chunks[1]); - - // Footer - let footer = Paragraph::new( - " ↑↓: select s: start/stop r: restart l: logs a: start all x: stop all q: quit", - ) - .style(Style::default().fg(Color::DarkGray)); - f.render_widget(footer, chunks[2]); -} - -fn draw_runtime_header(f: &mut Frame, app: &App, area: Rect) { - let running = app.components.iter().filter(|c| c.state == ProcState::Running).count(); - let total_enabled = app.components.iter().filter(|c| c.enabled).count(); - - let title = format!(" Bit-Bots Teamplayer [{running}/{total_enabled} running]"); - let sim_badge = if app.params.sim { " SIM " } else { "" }; - let text = format!("{title}{sim_badge}"); - - let p = Paragraph::new(text) - .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)); - f.render_widget(p, area); -} - -fn draw_runtime_list(f: &mut Frame, app: &App, area: Rect) { - let visible = app.runtime_visible_indices(); - if visible.is_empty() { - let p = Paragraph::new("No components enabled.").alignment(Alignment::Center); - f.render_widget(p, area); - return; - } - - let row_height = 1u16; - let rows: Vec = visible.iter().map(|_| Constraint::Length(row_height)).collect(); - let row_chunks = Layout::default() - .direction(Direction::Vertical) - .constraints(rows) - .split(area); - - for (vis_i, &comp_idx) in visible.iter().enumerate() { - let selected = app.runtime_selected == vis_i; - let comp = &app.components[comp_idx]; - let def = &COMPONENT_DEFS[comp_idx]; - - if vis_i < row_chunks.len() { - draw_runtime_row(f, app, row_chunks[vis_i], comp, def, selected); - } - } -} + /// Override the field name [default: labor, or hsl_kid in sim] + #[arg(long, value_name = "NAME")] + fieldname: Option, -fn draw_runtime_row( - f: &mut Frame, - app: &App, - area: Rect, - comp: &ComponentState, - def: &ComponentDef, - selected: bool, -) { - let row_style = if selected { - Style::default().bg(Color::DarkGray) - } else { - Style::default() - }; - - let spinner = match comp.state { - ProcState::Running => format!("{} ", spinner_char(app.tick_count)), - ProcState::Stopping => "… ".to_string(), - _ => " ".to_string(), - }; - - let state_label = comp.state.label(); - let state_style = comp.state.style(); - - let infra_marker = if def.infrastructure { "·" } else { " " }; - - let line = Line::from(vec![ - Span::styled(format!("{infra_marker}"), Style::default().fg(Color::DarkGray)), - Span::styled(spinner, Style::default().fg(Color::Green)), - Span::styled( - format!("[{state_label}]"), - state_style.add_modifier(Modifier::BOLD), - ), - Span::raw(" "), - Span::styled( - format!("{:<16}", def.name), - if selected { - Style::default().fg(Color::White).add_modifier(Modifier::BOLD) - } else { - Style::default() - }, - ), - Span::raw(" "), - Span::styled("s", Style::default().fg(Color::Yellow)), - Span::raw(":start/stop "), - Span::styled("r", Style::default().fg(Color::Yellow)), - Span::raw(":restart "), - Span::styled("l", Style::default().fg(Color::Yellow)), - Span::raw(":logs"), - ]); - - let p = Paragraph::new(line).style(row_style); - f.render_widget(p, area); -} - -fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { - let area = f.size(); - let comp = &app.components[comp_idx]; - let def = &COMPONENT_DEFS[comp_idx]; - - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) - .split(area); - - let title = format!(" Logs: {} ", def.name); - let header = Paragraph::new(title) - .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)); - f.render_widget(header, chunks[0]); - - let log_area = chunks[1]; - let log_height = log_area.height as usize; - - let lines: Vec = { - let logs = comp.logs.lock().unwrap(); - let total = logs.len(); - let scroll = app.log_scroll.min(if total > log_height { total - log_height } else { 0 }); - logs.iter() - .skip(scroll) - .take(log_height) - .map(|s| Line::from(s.clone())) - .collect() - }; - - let log_p = Paragraph::new(lines) - .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::White)); - f.render_widget(log_p, log_area); - - let footer = Paragraph::new(" ↑↓/PgUp/PgDn: scroll Esc/q: back G: jump to end") - .style(Style::default().fg(Color::DarkGray)); - f.render_widget(footer, chunks[2]); -} - -// ─── Input handling ─────────────────────────────────────────────────────────── - -async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { - match (&app.config_focus.clone(), key) { - // Navigation - (_, KeyCode::Tab) => { - if modifiers.contains(KeyModifiers::SHIFT) { - app.config_focus_prev(); - } else { - app.config_focus_next(); - } - } - (_, KeyCode::Down) => app.config_focus_next(), - (_, KeyCode::Up) => app.config_focus_prev(), - - // Zenoh toggle - (ConfigFocus::Zenoh, KeyCode::Char(' ') | KeyCode::Enter) => { - app.params.zenoh = !app.params.zenoh; - let zenoh_idx = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh").unwrap(); - app.components[zenoh_idx].enabled = app.params.zenoh; - } - - // Sim toggle - (ConfigFocus::Sim, KeyCode::Char(' ') | KeyCode::Enter) => { - app.params.sim = !app.params.sim; - let sim = app.params.sim; - for (i, def) in COMPONENT_DEFS.iter().enumerate() { - if def.key == "simulator" { - app.components[i].enabled = sim; - } else if def.hardware_only { - // Auto-disable HW-only components in sim, restore default otherwise - app.components[i].enabled = !sim && def.default_enabled; - } - } - // Reset config focus if it now points at a hidden component - app.config_focus = ConfigFocus::Zenoh; - } - - // Fieldname text input - (ConfigFocus::Fieldname, KeyCode::Char(c)) => { - app.config_fieldname_input.push(c); - app.params.fieldname = app.config_fieldname_input.clone(); - } - (ConfigFocus::Fieldname, KeyCode::Backspace) => { - app.config_fieldname_input.pop(); - app.params.fieldname = app.config_fieldname_input.clone(); - } - - // DSD file text input - (ConfigFocus::DsdFile, KeyCode::Char(c)) => { - app.config_dsd_input.push(c); - app.params.dsd_file = app.config_dsd_input.clone(); - } - (ConfigFocus::DsdFile, KeyCode::Backspace) => { - app.config_dsd_input.pop(); - app.params.dsd_file = app.config_dsd_input.clone(); - } - - // Component checkbox toggle - (ConfigFocus::Component(fi), KeyCode::Char(' ') | KeyCode::Enter) => { - let fi = *fi; - let toggleables = app.toggleable_indices(); - if fi < toggleables.len() { - let comp_idx = toggleables[fi]; - app.components[comp_idx].enabled = !app.components[comp_idx].enabled; - } - } - - // Start button - (ConfigFocus::Start, KeyCode::Enter | KeyCode::Char(' ')) => { - // Transition to runtime - app.params.fieldname = app.config_fieldname_input.clone(); - app.params.dsd_file = app.config_dsd_input.clone(); - app.screen = Screen::Runtime; - app.start_all_enabled().await; - } - - // Quit - (_, KeyCode::Char('q') | KeyCode::Char('Q')) => { - return true; // signal quit - } - (_, KeyCode::Esc) => { - return true; - } + /// Override the behavior DSD file [default: main.dsd] + #[arg(long, value_name = "FILE", default_value = "main.dsd")] + dsd_file: String, - _ => {} - } - false -} + /// Disable the Zenoh daemon (useful when zenoh is already running externally) + #[arg(long)] + no_zenoh: bool, -async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers) -> bool { - let visible = app.runtime_visible_indices(); - let sel = app.runtime_selected.min(visible.len().saturating_sub(1)); - let comp_idx = visible.get(sel).copied(); + /// Enable a component by key; may be specified multiple times. + /// Available keys: zenoh, blackboard, robot_description, diagnostics, + /// simulator, lowlevel, motion, game_controller, vision, ipm, localization, + /// path_planning, behavior, teamcom, world_model, whistle_detector, audio, + /// tts, monitoring, record + #[arg(long = "enable", value_name = "KEY")] + enable: Vec, - match key { - KeyCode::Down | KeyCode::Char('j') => { - app.runtime_selected = (sel + 1).min(visible.len().saturating_sub(1)); - } - KeyCode::Up | KeyCode::Char('k') => { - app.runtime_selected = sel.saturating_sub(1); - } - KeyCode::Char('s') => { - if let Some(idx) = comp_idx { - match app.components[idx].state { - ProcState::Running | ProcState::Stopping => { - app.stop_component(idx).await; - } - ProcState::Idle | ProcState::Stopped | ProcState::Crashed => { - app.components[idx].state = ProcState::Idle; - app.start_component(idx).await; - } - } - } - } - KeyCode::Char('r') => { - if let Some(idx) = comp_idx { - app.stop_component(idx).await; - // Brief delay then restart — we set idle so it auto-starts - // Actually just start immediately; stop sends SIGTERM async - app.components[idx].state = ProcState::Idle; - app.start_component(idx).await; - } - } - KeyCode::Char('l') => { - if let Some(idx) = comp_idx { - app.log_scroll = usize::MAX; // jump to end - { - let logs = app.components[idx].logs.lock().unwrap(); - let len = logs.len(); - drop(logs); - app.log_scroll = len.saturating_sub(1); - } - app.screen = Screen::Logs(idx); - } - } - KeyCode::Char('a') => { - app.start_all_enabled().await; - } - KeyCode::Char('x') => { - app.stop_all().await; - } - KeyCode::Esc => { - // Back to config (ask for quit confirm instead) - app.screen = Screen::Config; - } - KeyCode::Char('q') | KeyCode::Char('Q') => { - return true; - } - _ => {} - } - false -} - -async fn handle_logs_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers, comp_idx: usize) -> bool { - let log_len = app.components[comp_idx].logs.lock().unwrap().len(); - match key { - KeyCode::Down | KeyCode::Char('j') => { - app.log_scroll = (app.log_scroll + 1).min(log_len.saturating_sub(1)); - } - KeyCode::Up | KeyCode::Char('k') => { - app.log_scroll = app.log_scroll.saturating_sub(1); - } - KeyCode::PageDown => { - app.log_scroll = (app.log_scroll + 20).min(log_len.saturating_sub(1)); - } - KeyCode::PageUp => { - app.log_scroll = app.log_scroll.saturating_sub(20); - } - KeyCode::Char('G') => { - app.log_scroll = log_len.saturating_sub(1); - } - KeyCode::Char('g') => { - app.log_scroll = 0; - } - KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { - app.screen = Screen::Runtime; - } - _ => {} - } - false + /// Disable a component by key; may be specified multiple times + #[arg(long = "disable", value_name = "KEY")] + disable: Vec, } -// ─── Terminal cleanup helpers ───────────────────────────────────────────────── +// ─── Terminal helpers ───────────────────────────────────────────────────────── fn setup_panic_hook() { let original = std::panic::take_hook(); std::panic::set_hook(Box::new(move |info| { - // Best-effort cleanup — ignore errors let _ = disable_raw_mode(); let _ = execute!( std::io::stdout(), @@ -1225,59 +84,116 @@ fn cleanup_terminal() { ); } -// ─── Main ───────────────────────────────────────────────────────────────────── +// ─── Entry point ────────────────────────────────────────────────────────────── #[tokio::main] async fn main() -> Result<()> { - setup_panic_hook(); - - // Setup terminal - enable_raw_mode()?; - let mut stdout = std::io::stdout(); - execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; - let backend = CrosstermBackend::new(stdout); - let mut terminal = Terminal::new(backend)?; + let cli = Cli::parse(); let mut app = App::new(); - let mut event_stream = EventStream::new(); - let mut tick_interval = tokio::time::interval(Duration::from_millis(100)); + app.apply_cli_presets( + cli.sim, + cli.no_zenoh, + cli.fieldname.as_deref(), + &cli.dsd_file, + &cli.enable, + &cli.disable, + ); - let result = run_loop(&mut terminal, &mut app, &mut event_stream, &mut tick_interval).await; + let result = if cli.headless { + run_headless(&mut app).await + } else { + setup_panic_hook(); + enable_raw_mode()?; + let mut stdout = std::io::stdout(); + execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + let backend = CrosstermBackend::new(stdout); + let mut terminal = Terminal::new(backend)?; + + let mut event_stream = EventStream::new(); + let mut tick_interval = time::interval(Duration::from_millis(100)); + let r = run_tui(&mut terminal, &mut app, &mut event_stream, &mut tick_interval).await; + cleanup_terminal(); + r + }; - // Ensure all children are killed - app.stop_all().await; - // Give them a moment to receive SIGTERM - tokio::time::sleep(Duration::from_millis(300)).await; - // SIGKILL anything still alive (whole process group) - for comp in &app.components { - for &pid in &comp.pids { - unsafe { - libc::kill(-(pid as libc::pid_t), libc::SIGKILL); + // SIGTERM all remaining process groups on exit + { + use nix::sys::signal::{killpg, Signal}; + use nix::unistd::Pid; + for comp in &app.components { + for &pid in &comp.pids { + let _ = killpg(Pid::from_raw(pid as i32), Signal::SIGTERM); } } } - cleanup_terminal(); result } -async fn run_loop( +// ─── Headless mode ──────────────────────────────────────────────────────────── + +async fn run_headless(app: &mut App) -> Result<()> { + eprintln!("teamplayer [headless] — Ctrl-C to stop"); + eprintln!(); + + // Print what will be started + for comp in &app.components { + let def = &COMPONENT_DEFS[comp.comp_idx]; + if comp.enabled { + eprintln!(" [+] {}", def.name); + } + } + eprintln!(); + + app.start_all_enabled().await; + + let mut tick = time::interval(Duration::from_millis(500)); + loop { + tokio::select! { + _ = tick.tick() => { + let to_restart = app.drain_messages(); + for idx in to_restart { + app.start_component(idx).await; + } + let any_running = app.components.iter().any(|c| { + matches!(c.state, ProcState::Running | ProcState::Stopping) + }); + if !any_running { + eprintln!("All components have stopped."); + break; + } + } + _ = tokio::signal::ctrl_c() => { + eprintln!("\nInterrupted — stopping all components..."); + break; + } + } + } + Ok(()) +} + +// ─── TUI event loop ─────────────────────────────────────────────────────────── + +async fn run_tui( terminal: &mut Terminal>, app: &mut App, event_stream: &mut EventStream, - tick_interval: &mut tokio::time::Interval, + tick_interval: &mut time::Interval, ) -> Result<()> { loop { - terminal.draw(|f| draw(f, app))?; + terminal.draw(|f| ui::draw(f, app))?; tokio::select! { _ = tick_interval.tick() => { app.tick_count += 1; - app.drain_messages(); - // Auto-scroll logs to bottom if on log screen + let to_restart = app.drain_messages(); + for idx in to_restart { + app.start_component(idx).await; + } if let Screen::Logs(idx) = &app.screen { - let len = app.components[*idx].logs.lock().unwrap().len(); - // Only auto-scroll if near the bottom + let idx = *idx; + let len = app.components[idx].logs.lock().unwrap().len(); if app.log_scroll + 5 >= len.saturating_sub(1) { app.log_scroll = len.saturating_sub(1); } @@ -1285,18 +201,17 @@ async fn run_loop( } maybe_event = event_stream.next() => { - let Some(Ok(event)) = maybe_event else { break; }; - + let Some(Ok(event)) = maybe_event else { break }; if let Event::Key(key_event) = event { let quit = match app.screen.clone() { Screen::Config => { - handle_config_key(app, key_event.code, key_event.modifiers).await + input::handle_config_key(app, key_event.code, key_event.modifiers).await } Screen::Runtime => { - handle_runtime_key(app, key_event.code, key_event.modifiers).await + input::handle_runtime_key(app, key_event.code, key_event.modifiers).await } Screen::Logs(idx) => { - handle_logs_key(app, key_event.code, key_event.modifiers, idx).await + input::handle_logs_key(app, key_event.code, key_event.modifiers, idx).await } }; if quit { diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs new file mode 100644 index 0000000000..9fae564457 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -0,0 +1,408 @@ +use ratatui::{ + layout::{Alignment, Constraint, Direction, Layout, Rect}, + style::{Color, Modifier, Style}, + text::{Line, Span}, + widgets::{Block, Borders, Paragraph}, + Frame, +}; + +use crate::app::{App, ConfigFocus, ProcState, Screen}; +use crate::components::COMPONENT_DEFS; + +// ─── Banner ─────────────────────────────────────────────────────────────────── + +const BANNER: &str = r#" + ██████╗ ██╗████████╗ ██████╗ ██████╗ ████████╗███████╗ + ██╔══██╗██║╚══██╔══╝ ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝ + ██████╔╝██║ ██║ ██████╔╝██║ ██║ ██║ ███████╗ + ██╔══██╗██║ ██║ ██╔══██╗██║ ██║ ██║ ╚════██║ + ██████╔╝██║ ██║ ██████╔╝╚██████╔╝ ██║ ███████║ + ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ + Teamplayer Launcher +"#; + +// ─── Helpers ────────────────────────────────────────────────────────────────── + +pub fn proc_state_style(state: &ProcState) -> Style { + match state { + ProcState::Idle => Style::default().fg(Color::DarkGray), + ProcState::Running => Style::default().fg(Color::Green), + ProcState::Stopping => Style::default().fg(Color::Yellow), + ProcState::Restarting => Style::default().fg(Color::Cyan), + ProcState::Stopped => Style::default().fg(Color::Blue), + ProcState::Crashed => Style::default().fg(Color::Red), + } +} + +fn spinner_char(tick: u64) -> char { + const FRAMES: &[char] = &['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; + FRAMES[(tick as usize) % FRAMES.len()] +} + +// ─── Top-level dispatch ─────────────────────────────────────────────────────── + +pub fn draw(f: &mut Frame, app: &App) { + match &app.screen { + Screen::Config => draw_config(f, app), + Screen::Runtime => draw_runtime(f, app), + Screen::Logs(idx) => draw_logs(f, app, *idx), + } +} + +// ─── Config screen ──────────────────────────────────────────────────────────── + +pub fn draw_config(f: &mut Frame, app: &App) { + let area = f.size(); + let banner_lines = BANNER.lines().count() as u16; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(banner_lines), + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(3), + Constraint::Length(1), + ]) + .split(area); + + f.render_widget( + Paragraph::new(BANNER) + .style(Style::default().fg(Color::Cyan)) + .alignment(Alignment::Center), + chunks[0], + ); + + draw_config_flags(f, app, chunks[1]); + draw_config_components(f, app, chunks[2]); + draw_start_button(f, app, chunks[3]); + + f.render_widget( + Paragraph::new(" Tab/↑↓: navigate Space/Enter: toggle/activate q: quit") + .style(Style::default().fg(Color::DarkGray)), + chunks[4], + ); +} + +fn draw_config_flags(f: &mut Frame, app: &App, area: Rect) { + let chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([ + Constraint::Length(18), + Constraint::Length(18), + Constraint::Min(20), + Constraint::Min(20), + ]) + .split(area); + + let focus_border = |focused: bool| { + if focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + } + }; + let focus_text = |focused: bool| { + if focused { + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD) + } else { + Style::default().fg(Color::White) + } + }; + + let zenoh_focused = app.config_focus == ConfigFocus::Zenoh; + let sim_focused = app.config_focus == ConfigFocus::Sim; + let field_focused = app.config_focus == ConfigFocus::Fieldname; + let dsd_focused = app.config_focus == ConfigFocus::DsdFile; + + f.render_widget( + Paragraph::new(if app.params.zenoh { "[✓] Zenoh" } else { "[ ] Zenoh" }) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(focus_border(zenoh_focused)), + ) + .style(focus_text(zenoh_focused)), + chunks[0], + ); + + f.render_widget( + Paragraph::new(if app.params.sim { + "[✓] Simulator" + } else { + "[ ] Simulator" + }) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(focus_border(sim_focused)), + ) + .style(focus_text(sim_focused)), + chunks[1], + ); + + f.render_widget( + Paragraph::new(app.config_fieldname_input.as_str()).block( + Block::default() + .borders(Borders::ALL) + .title("Fieldname") + .border_style(focus_border(field_focused)), + ), + chunks[2], + ); + + f.render_widget( + Paragraph::new(app.config_dsd_input.as_str()).block( + Block::default() + .borders(Borders::ALL) + .title("DSD File") + .border_style(focus_border(dsd_focused)), + ), + chunks[3], + ); +} + +fn draw_config_components(f: &mut Frame, app: &App, area: Rect) { + let toggleables = app.toggleable_indices(); + let col_chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) + .split(area); + + let left_count = (toggleables.len() + 1) / 2; + let (left, right) = toggleables.split_at(left_count); + draw_component_column(f, app, col_chunks[0], left, 0); + draw_component_column(f, app, col_chunks[1], right, left.len()); +} + +fn draw_component_column( + f: &mut Frame, + app: &App, + area: Rect, + comp_indices: &[usize], + focus_offset: usize, +) { + if comp_indices.is_empty() { + return; + } + let rows: Vec = comp_indices.iter().map(|_| Constraint::Length(1)).collect(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (local_i, &comp_idx) in comp_indices.iter().enumerate() { + let focused = app.config_focus == ConfigFocus::Component(focus_offset + local_i); + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let check = if comp.enabled { "✓" } else { " " }; + let style = if focused { + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD) + } else if comp.enabled { + Style::default().fg(Color::White) + } else { + Style::default().fg(Color::DarkGray) + }; + + if local_i < chunks.len() { + f.render_widget( + Paragraph::new(format!("[{check}] {}", def.name)).style(style), + chunks[local_i], + ); + } + } +} + +fn draw_start_button(f: &mut Frame, app: &App, area: Rect) { + let focused = app.config_focus == ConfigFocus::Start; + let has_running = app.components.iter().any(|c| c.state == ProcState::Running); + let label = if has_running { + " Continue → " + } else { + " Launch → " + }; + let (border_style, text_style) = if focused { + ( + Style::default().fg(Color::Yellow), + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD), + ) + } else { + ( + Style::default().fg(Color::Green), + Style::default() + .fg(Color::Green) + .add_modifier(Modifier::BOLD), + ) + }; + f.render_widget( + Paragraph::new(label) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(border_style), + ) + .style(text_style) + .alignment(Alignment::Center), + area, + ); +} + +// ─── Runtime screen ─────────────────────────────────────────────────────────── + +pub fn draw_runtime(f: &mut Frame, app: &App) { + let area = f.size(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) + .split(area); + + draw_runtime_header(f, app, chunks[0]); + draw_runtime_list(f, app, chunks[1]); + f.render_widget( + Paragraph::new( + " ↑↓/jk: select s: start/stop r: restart l: logs a: start all x: stop all Esc: config q: quit", + ) + .style(Style::default().fg(Color::DarkGray)), + chunks[2], + ); +} + +fn draw_runtime_header(f: &mut Frame, app: &App, area: Rect) { + let running = app + .components + .iter() + .filter(|c| c.state == ProcState::Running) + .count(); + let total_enabled = app.components.iter().filter(|c| c.enabled).count(); + let sim_badge = if app.params.sim { " [SIM]" } else { "" }; + f.render_widget( + Paragraph::new(format!( + " Bit-Bots Teamplayer [{running}/{total_enabled} running]{sim_badge}" + )) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)), + area, + ); +} + +fn draw_runtime_list(f: &mut Frame, app: &App, area: Rect) { + let visible = app.runtime_visible_indices(); + if visible.is_empty() { + f.render_widget( + Paragraph::new("No components enabled.").alignment(Alignment::Center), + area, + ); + return; + } + + let rows: Vec = visible.iter().map(|_| Constraint::Length(1)).collect(); + let row_chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (vis_i, &comp_idx) in visible.iter().enumerate() { + if vis_i >= row_chunks.len() { + break; + } + let selected = app.runtime_selected == vis_i; + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let row_style = if selected { + Style::default().bg(Color::DarkGray) + } else { + Style::default() + }; + let spinner = match comp.state { + ProcState::Running => format!("{} ", spinner_char(app.tick_count)), + ProcState::Stopping => "… ".to_string(), + ProcState::Restarting => "↺ ".to_string(), + _ => " ".to_string(), + }; + + let line = Line::from(vec![ + Span::styled( + if def.infrastructure { "·" } else { " " }, + Style::default().fg(Color::DarkGray), + ), + Span::styled(spinner, Style::default().fg(Color::Green)), + Span::styled( + format!("[{}]", comp.state.label()), + proc_state_style(&comp.state).add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + Span::styled( + format!("{:<18}", def.name), + if selected { + Style::default() + .fg(Color::White) + .add_modifier(Modifier::BOLD) + } else { + Style::default() + }, + ), + Span::raw(" "), + Span::styled("s", Style::default().fg(Color::Yellow)), + Span::raw(":start/stop "), + Span::styled("r", Style::default().fg(Color::Yellow)), + Span::raw(":restart "), + Span::styled("l", Style::default().fg(Color::Yellow)), + Span::raw(":logs"), + ]); + f.render_widget(Paragraph::new(line).style(row_style), row_chunks[vis_i]); + } +} + +// ─── Logs screen ────────────────────────────────────────────────────────────── + +pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { + let area = f.size(); + let comp = &app.components[comp_idx]; + let name = COMPONENT_DEFS[comp_idx].name; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) + .split(area); + + f.render_widget( + Paragraph::new(format!(" Logs: {name} ")) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)), + chunks[0], + ); + + let log_height = chunks[1].height as usize; + let lines: Vec = { + let logs = comp.logs.lock().unwrap(); + let total = logs.len(); + let max_scroll = if total > log_height { total - log_height } else { 0 }; + let scroll = app.log_scroll.min(max_scroll); + logs.iter() + .skip(scroll) + .take(log_height) + .map(|s| Line::from(s.clone())) + .collect() + }; + + f.render_widget( + Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL)) + .style(Style::default().fg(Color::White)), + chunks[1], + ); + + f.render_widget( + Paragraph::new(" ↑↓/jk/PgUp/PgDn: scroll g: top G: bottom Esc/q/l: back") + .style(Style::default().fg(Color::DarkGray)), + chunks[2], + ); +} From c11b58e10686f705b2c657b371258643b770cd44 Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Mon, 1 Jun 2026 21:40:35 +0200 Subject: [PATCH 03/48] Fix sim launch --- src/bitbots_misc/bitbots_bringup/tui/src/components.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs index 0045e8cb0b..86221896e3 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs @@ -126,8 +126,8 @@ pub static COMPONENT_DEFS: &[ComponentDef] = &[ sim_component: true, cmds: |p| { vec![ros2_launch( - "bitbots_bringup", - "mujoco_simulation.launch.py", + "bitbots_mujoco_sim", + "simulator.launch", &[&sim(p)], )] }, From 89514149caa88b9304d10c2d357ae1ac8afedee0 Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Mon, 1 Jun 2026 22:13:10 +0200 Subject: [PATCH 04/48] Better threading model for the team com --- .../bitbots_team_communication.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py index d52c6e7a11..41c9d069c7 100755 --- a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py +++ b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py @@ -3,6 +3,7 @@ import socket import struct import threading +import time from typing import Optional import rclpy @@ -63,24 +64,16 @@ def __init__(self): self.tf_buffer = Buffer(node=self.node) - self.run_spin_in_thread() self.try_to_establish_connection() + self.logger.info("Successfully established connection.") + self.node.create_timer(1 / self.rate, self.send_message, callback_group=MutuallyExclusiveCallbackGroup()) - self.receive_forever() - def spin(self): - executor = EventsExecutor() - executor.add_node(self.node) - try: - executor.spin() - except KeyboardInterrupt: - pass + receive_thread = threading.Thread(target=self.receive_forever, daemon=True) + receive_thread.start() - def run_spin_in_thread(self): - # Necessary in ROS2, else we are forever stuck receiving messages - thread = threading.Thread(target=self.spin, daemon=True) - thread.start() + self.logger.info("Initialization complete.") def set_state_defaults(self): self.gamestate: Optional[GameState] = None @@ -100,8 +93,9 @@ def set_state_defaults(self): def try_to_establish_connection(self): # we will try multiple times till we manage to get a connection while rclpy.ok() and not self.socket_communication.is_setup(): + self.logger.info("Trying to establish connection...") self.socket_communication.establish_connection() - self.node.get_clock().sleep_for(Duration(seconds=1)) + time.sleep(1) def create_publishers(self): self.team_data_publisher = self.node.create_publisher(TeamData, self.topics["team_data_topic"], qos_profile=1) @@ -317,8 +311,14 @@ def convert_to_euler(self, quaternion: Quaternion): def main(): rclpy.init(args=None) - TeamCommunication() - + tc = TeamCommunication() + + executor = EventsExecutor() + executor.add_node(tc.node) + try: + executor.spin() + except KeyboardInterrupt: + pass if __name__ == "__main__": main() From 871ffba336cb2020e76dcf5d43f222e8ba876945 Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Mon, 1 Jun 2026 22:30:39 +0200 Subject: [PATCH 05/48] Add joined log view --- .../bitbots_bringup/tui/src/app.rs | 54 +++++++++++---- .../bitbots_bringup/tui/src/input.rs | 1 + .../bitbots_bringup/tui/src/main.rs | 10 ++- .../bitbots_bringup/tui/src/ui.rs | 67 +++++++++++++++++-- 4 files changed, 111 insertions(+), 21 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index 25943bada3..675e959d99 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -98,6 +98,8 @@ pub struct App { pub msg_tx: mpsc::UnboundedSender, pub msg_rx: mpsc::UnboundedReceiver, pub log_scroll: usize, + pub all_logs: Arc>>, + pub show_log_panel: bool, } impl App { @@ -123,6 +125,8 @@ impl App { msg_tx, msg_rx, log_scroll: 0, + all_logs: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), + show_log_panel: true, } } @@ -237,8 +241,10 @@ impl App { let def = &COMPONENT_DEFS[comp_idx]; let cmds = (def.cmds)(&self.params); let key = def.key.to_string(); + let comp_name = def.name; // &'static str let logs = self.components[comp_idx].logs.clone(); + let all_logs = self.all_logs.clone(); self.components[comp_idx].state = ProcState::Running; self.components[comp_idx].pids.clear(); self.components[comp_idx].task_handles.clear(); @@ -249,6 +255,7 @@ impl App { } let tx = self.msg_tx.clone(); let logs = logs.clone(); + let all_logs = all_logs.clone(); let key = key.clone(); let mut child = match Command::new(&cmd_args[0]) @@ -261,9 +268,9 @@ impl App { { Ok(c) => c, Err(e) => { - let mut l = logs.lock().unwrap(); - l.push_back(format!("[ERROR] spawn failed: {e}")); - drop(l); + let entry = format!("[ERROR] spawn failed: {e}"); + logs.lock().unwrap().push_back(entry.clone()); + all_logs.lock().unwrap().push_back(format!("[{comp_name}] {entry}")); let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); return; } @@ -280,7 +287,9 @@ impl App { async fn pump( mut r: BufReader, logs: Arc>>, - prefix: &str, + all_logs: Arc>>, + prefix: &'static str, + comp_name: &'static str, ) { let mut line = String::new(); while let Ok(n) = r.read_line(&mut line).await { @@ -288,20 +297,37 @@ impl App { break; } let entry = format!("{}{}", prefix, line.trim_end_matches('\n')); - let mut l = logs.lock().unwrap(); - if l.len() >= 2000 { - l.pop_front(); + { + let mut l = logs.lock().unwrap(); + if l.len() >= 2000 { + l.pop_front(); + } + l.push_back(entry.clone()); + } + { + let mut l = all_logs.lock().unwrap(); + if l.len() >= 5000 { + l.pop_front(); + } + l.push_back(format!("[{comp_name}] {entry}")); } - l.push_back(entry); line.clear(); } } - if let Some(r) = stdout { - pump(r, logs.clone(), "").await; - } - if let Some(r) = stderr { - pump(r, logs.clone(), "[ERR] ").await; - } + // Read stdout and stderr concurrently so neither blocks the other. + let (logs2, all2) = (logs.clone(), all_logs.clone()); + tokio::join!( + async move { + if let Some(r) = stdout { + pump(r, logs2, all2, "", comp_name).await; + } + }, + async move { + if let Some(r) = stderr { + pump(r, logs, all_logs, "[ERR] ", comp_name).await; + } + } + ); let code = child .wait() .await diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs index 356d019ba9..2ee9e8ab9d 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -124,6 +124,7 @@ pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModi } } + KeyCode::Char('v') => app.show_log_panel = !app.show_log_panel, KeyCode::Char('a') => app.start_all_enabled().await, KeyCode::Char('x') => app.stop_all().await, KeyCode::Esc => app.screen = Screen::Config, diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs index ef259cb682..fc4ed7760f 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -148,7 +148,7 @@ async fn run_headless(app: &mut App) -> Result<()> { app.start_all_enabled().await; - let mut tick = time::interval(Duration::from_millis(500)); + let mut tick = time::interval(Duration::from_millis(50)); loop { tokio::select! { _ = tick.tick() => { @@ -156,8 +156,14 @@ async fn run_headless(app: &mut App) -> Result<()> { for idx in to_restart { app.start_component(idx).await; } + { + let mut logs = app.all_logs.lock().unwrap(); + while let Some(entry) = logs.pop_front() { + println!("{entry}"); + } + } let any_running = app.components.iter().any(|c| { - matches!(c.state, ProcState::Running | ProcState::Stopping) + matches!(c.state, ProcState::Running | ProcState::Stopping | ProcState::Restarting) }); if !any_running { eprintln!("All components have stopped."); diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index 9fae564457..38eebf389b 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -264,12 +264,25 @@ pub fn draw_runtime(f: &mut Frame, app: &App) { .split(area); draw_runtime_header(f, app, chunks[0]); - draw_runtime_list(f, app, chunks[1]); + + if app.show_log_panel { + let cols = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(35), Constraint::Percentage(65)]) + .split(chunks[1]); + draw_runtime_list(f, app, cols[0]); + draw_joint_logs(f, app, cols[1]); + } else { + draw_runtime_list(f, app, chunks[1]); + } + + let hint = if app.show_log_panel { + " ↑↓/jk: select s: stop/start r: restart l: logs a: start all x: stop all v: hide logs Esc: config q: quit" + } else { + " ↑↓/jk: select s: stop/start r: restart l: logs a: start all x: stop all v: show logs Esc: config q: quit" + }; f.render_widget( - Paragraph::new( - " ↑↓/jk: select s: start/stop r: restart l: logs a: start all x: stop all Esc: config q: quit", - ) - .style(Style::default().fg(Color::DarkGray)), + Paragraph::new(hint).style(Style::default().fg(Color::DarkGray)), chunks[2], ); } @@ -361,6 +374,50 @@ fn draw_runtime_list(f: &mut Frame, app: &App, area: Rect) { } } +fn tag_color(tag: &str) -> Color { + const PALETTE: &[Color] = &[ + Color::Cyan, + Color::Green, + Color::Magenta, + Color::Yellow, + Color::LightBlue, + Color::LightGreen, + Color::LightMagenta, + Color::LightRed, + ]; + let h = tag.bytes().fold(0usize, |a, b| a.wrapping_add(b as usize)); + PALETTE[h % PALETTE.len()] +} + +fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { + let inner_h = area.height.saturating_sub(2) as usize; + let lines: Vec = { + let logs = app.all_logs.lock().unwrap(); + let skip = logs.len().saturating_sub(inner_h); + logs.iter() + .skip(skip) + .map(|s| { + if let Some(close) = s.find("] ") { + let tag = &s[..close + 1]; // "[CompName]" + let rest = &s[close + 2..]; + Line::from(vec![ + Span::styled(tag.to_string(), Style::default().fg(tag_color(tag))), + Span::raw(" "), + Span::raw(rest.to_string()), + ]) + } else { + Line::from(s.clone()) + } + }) + .collect() + }; + f.render_widget( + Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL).title(" All Logs ")), + area, + ); +} + // ─── Logs screen ────────────────────────────────────────────────────────────── pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { From deec3e8759ca7756d085ee3ab245dc2933b7820c Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Tue, 2 Jun 2026 00:08:38 +0200 Subject: [PATCH 06/48] Use events executor for walk --- .../bitbots_rl_walk/bitbots_rl_walk/walk.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py b/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py index eeb6ef7ba6..3091b1bccc 100644 --- a/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py +++ b/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py @@ -20,6 +20,7 @@ import numpy as np import onnxruntime as rt from ament_index_python import get_package_share_directory +from rclpy.experimental.events_executor import EventsExecutor from geometry_msgs.msg import Twist from rclpy.node import Node from sensor_msgs.msg import Imu, JointState @@ -195,6 +196,10 @@ def main(): rclpy.init() node = WalkNode() - rclpy.spin(node) - node.destroy_node() - rclpy.try_shutdown() + + executor = EventsExecutor() + executor.add_node(node) + try: + executor.spin() + except KeyboardInterrupt: + pass From fc0fcc4b7e67978c2514f09f0f7d34582919d91b Mon Sep 17 00:00:00 2001 From: Lea Wedmann Date: Tue, 2 Jun 2026 00:09:05 +0200 Subject: [PATCH 07/48] Fix log rendering --- .../bitbots_bringup/tui/Cargo.lock | 48 +++++++++++++ .../bitbots_bringup/tui/Cargo.toml | 1 + .../bitbots_bringup/tui/src/ui.rs | 70 ++++++++++++++----- 3 files changed, 102 insertions(+), 17 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock index 8c6dbbc348..f76f29d3f1 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock @@ -8,6 +8,17 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "ansi-to-tui" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0e348dcd256ba06d44d5deabc88a7c0e80ee7303158253ca069bcd9e9b7f57" +dependencies = [ + "nom", + "ratatui", + "thiserror", +] + [[package]] name = "anstream" version = "0.6.21" @@ -387,6 +398,12 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "mio" version = "0.8.11" @@ -421,6 +438,16 @@ dependencies = [ "libc", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "once_cell_polyfill" version = "1.70.2" @@ -639,6 +666,7 @@ dependencies = [ name = "teamplayer" version = "0.1.0" dependencies = [ + "ansi-to-tui", "anyhow", "clap", "crossterm", @@ -648,6 +676,26 @@ dependencies = [ "tokio", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tokio" version = "1.52.3" diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml index 313033333e..d9754baf52 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml @@ -14,4 +14,5 @@ tokio = { version = "1", features = ["full"] } anyhow = "1" futures = "0.3" nix = { version = "0.27", features = ["signal", "process"] } +ansi-to-tui = "3" clap = { version = "~4.4", features = ["derive"] } diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index 38eebf389b..2b5e6c1aff 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -2,7 +2,7 @@ use ratatui::{ layout::{Alignment, Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, text::{Line, Span}, - widgets::{Block, Borders, Paragraph}, + widgets::{Block, Borders, Paragraph, Wrap}, Frame, }; @@ -389,31 +389,66 @@ fn tag_color(tag: &str) -> Color { PALETTE[h % PALETTE.len()] } +/// Convert a raw log string (which may contain ANSI escape codes) into an owned ratatui Line. +fn ansi_to_line(s: &str) -> Line<'static> { + use ansi_to_tui::IntoText; + match s.into_text() { + Ok(text) => Line::from( + text.lines + .into_iter() + .flat_map(|l| l.spans) + .map(|s| Span::styled(s.content.into_owned(), s.style)) + .collect::>(), + ), + Err(_) => Line::from(s.to_owned()), + } +} + fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { let inner_h = area.height.saturating_sub(2) as usize; - let lines: Vec = { + let inner_w = area.width.saturating_sub(2) as usize; + + let lines: Vec> = { let logs = app.all_logs.lock().unwrap(); - let skip = logs.len().saturating_sub(inner_h); + // Grab more entries than the panel height — wrapping will consume extra rows. + let skip = logs.len().saturating_sub(inner_h * 3); logs.iter() .skip(skip) - .map(|s| { - if let Some(close) = s.find("] ") { - let tag = &s[..close + 1]; // "[CompName]" - let rest = &s[close + 2..]; - Line::from(vec![ - Span::styled(tag.to_string(), Style::default().fg(tag_color(tag))), + .map(|entry| { + if let Some(close) = entry.find("] ") { + let tag = &entry[..close + 1]; // "[CompName]" + let rest = &entry[close + 2..]; + let mut spans: Vec> = vec![ + Span::styled( + tag.to_owned(), + Style::default().fg(tag_color(tag)).add_modifier(Modifier::BOLD), + ), Span::raw(" "), - Span::raw(rest.to_string()), - ]) + ]; + spans.extend(ansi_to_line(rest).spans); + Line::from(spans) } else { - Line::from(s.clone()) + ansi_to_line(entry) } }) .collect() }; + + // Estimate total visual rows so we can scroll to pin the view to the bottom. + let total_rows: usize = lines + .iter() + .map(|l| { + let chars: usize = l.spans.iter().map(|s| s.content.chars().count()).sum(); + if inner_w > 0 { (chars + inner_w - 1) / inner_w } else { 1 }.max(1) + }) + .sum(); + let scroll = total_rows.saturating_sub(inner_h) as u16; + f.render_widget( Paragraph::new(lines) - .block(Block::default().borders(Borders::ALL).title(" All Logs ")), + .block(Block::default().borders(Borders::ALL).title(" All Logs ")) + .wrap(Wrap { trim: false }) + .scroll((scroll, 0)), area, ); } @@ -438,22 +473,23 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { ); let log_height = chunks[1].height as usize; - let lines: Vec = { + let lines: Vec> = { let logs = comp.logs.lock().unwrap(); let total = logs.len(); let max_scroll = if total > log_height { total - log_height } else { 0 }; let scroll = app.log_scroll.min(max_scroll); logs.iter() .skip(scroll) - .take(log_height) - .map(|s| Line::from(s.clone())) + .take(log_height * 2) // extra entries so wrapped lines still fill the panel + .map(|s| ansi_to_line(s)) .collect() }; f.render_widget( Paragraph::new(lines) .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::White)), + .style(Style::default().fg(Color::White)) + .wrap(Wrap { trim: false }), chunks[1], ); From 37fe4418cabd3c51ae8309346ee46ed44dbf4a30 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 23 Dec 2025 00:57:20 +0100 Subject: [PATCH 08/48] Working state of the minimal demo rust node --- .vscode/settings.json | 22 + Cargo.lock | 1072 +++++++++++++++++++++++++ Cargo.toml | 12 + pixi.toml | 3 +- src/bitbots_rust_test/CMakeLists.txt | 47 ++ src/bitbots_rust_test/Cargo.toml | 10 + src/bitbots_rust_test/package.xml | 25 + src/bitbots_rust_test/r2r_cargo.cmake | 87 ++ src/bitbots_rust_test/src/main.rs | 99 +++ 9 files changed, 1376 insertions(+), 1 deletion(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/bitbots_rust_test/CMakeLists.txt create mode 100644 src/bitbots_rust_test/Cargo.toml create mode 100644 src/bitbots_rust_test/package.xml create mode 100644 src/bitbots_rust_test/r2r_cargo.cmake create mode 100644 src/bitbots_rust_test/src/main.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index 8ceee9d016..8ce11a9a81 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -315,6 +315,28 @@ "[jsonc]": { "editor.defaultFormatter": "vscode.json-language-features" }, + "rust-analyzer.check.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], + "rust-analyzer.cargo.buildScripts.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], "search.exclude": { "build": true, "install": true, diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000000..60e67e4831 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1072 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", +] + +[[package]] +name = "bitbots_rust_test" +version = "0.1.0" +dependencies = [ + "futures", + "r2r", + "tokio", +] + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "force-send-sync" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5682bd193aa441fe571a005561e0c0ada74f89ec2dc390483a6ff17c0665b9" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "indexmap" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" + +[[package]] +name = "js-sys" +version = "0.3.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.178" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +dependencies = [ + "memchr", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r2r" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b36b61a6252e8e7a24919b9877dacf1dc9f0ac4c2d0eba91c68b35c1b2283ed2" +dependencies = [ + "force-send-sync", + "futures", + "indexmap", + "lazy_static", + "log", + "phf", + "prettyplease", + "proc-macro2", + "quote", + "r2r_actions", + "r2r_common", + "r2r_macros", + "r2r_msg_gen", + "r2r_rcl", + "rayon", + "serde", + "serde_json", + "syn", + "thiserror", + "uuid", +] + +[[package]] +name = "r2r_actions" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca8488195951aaadef421b470c823cd095848bebf2004ff96ef5d351067eac1" +dependencies = [ + "bindgen", + "r2r_common", + "r2r_msg_gen", + "r2r_rcl", +] + +[[package]] +name = "r2r_common" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +dependencies = [ + "bindgen", + "os_str_bytes", + "regex", + "sha2", +] + +[[package]] +name = "r2r_macros" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "r2r_msg_gen" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03d5e77385a6b959014c14c45a444e1fbff99afad70912e120c21c30e7a65488" +dependencies = [ + "bindgen", + "force-send-sync", + "itertools 0.10.5", + "phf", + "proc-macro2", + "quote", + "r2r_common", + "r2r_rcl", + "rayon", + "syn", +] + +[[package]] +name = "r2r_rcl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +dependencies = [ + "bindgen", + "paste", + "r2r_common", + "widestring", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +dependencies = [ + "libc", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "getrandom", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..5b02be3ebf --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +members = [ + "src/bitbots_rust_test", +] + +# Optional but recommended for modern Cargo +resolver = "2" + +# We use a custom profile to keep colcon +# separate from "normal" rust building. +[profile.colcon] +inherits = "release" diff --git a/pixi.toml b/pixi.toml index cb41ba1d2b..1bb91a909e 100644 --- a/pixi.toml +++ b/pixi.toml @@ -26,7 +26,7 @@ cmd = "colcon build --symlink-install --cmake-args -G 'Unix Makefiles' " description = "Builds all ROS 2 packages. Add --packages-select to build specific packages." [tasks.clean] -cmd = "rm -rf 'build/{{ package }}' 'install/{{ package }}' {{ 'log' if not package }}" +cmd = "rm -rf 'build/{{ package }}' 'install/{{ package }}' {{ 'log' if not package }} {{ 'target' if not package }}" args = [{ arg = "package", default = "" }] description = "Cleans build and install files for all ROS 2 packages or a specific one if given." @@ -45,6 +45,7 @@ readline = ">=8.2.999" # This is needed because we want to install an empty rea [feature.ros.dependencies] # Misc dependencies for our ROS 2 packages alsa-plugins = ">=1.2.12,<2" +clang = ">=21.1.0,<22" # Needed for r2r rust bindings generation beartype = ">=0.22.6,<0.23" breathe = ">=4.36.0,<5" cbor2 = ">=5.9.0,<6" diff --git a/src/bitbots_rust_test/CMakeLists.txt b/src/bitbots_rust_test/CMakeLists.txt new file mode 100644 index 0000000000..a442846234 --- /dev/null +++ b/src/bitbots_rust_test/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_rust_test) + +find_package(ament_cmake REQUIRED) + +if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS) + set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings") +endif() + +include(r2r_cargo.cmake) + +# put ros package dependencies here. +r2r_cargo(std_msgs # just to test that it works + rcl # we need the c ros2 api + rcl_action # as of r2r 0.1.0, we also need the action api + rosgraph_msgs # for the Clock message + bitbots_msgs # our custom message types + ) + +# install binaries +if(WIN32) + set(SUFFIX ".exe") +else() + set(SUFFIX "") +endif() + +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +# Extract "target_directory" from JSON +string(JSON CARGO_TARGET_DIR + GET "${CARGO_METADATA_JSON}" target_directory +) + +message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") + +install(PROGRAMS + ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} + DESTINATION lib/${PROJECT_NAME} +) + +# we need this for ros/colcon +ament_package() diff --git a/src/bitbots_rust_test/Cargo.toml b/src/bitbots_rust_test/Cargo.toml new file mode 100644 index 0000000000..53dbbd64f5 --- /dev/null +++ b/src/bitbots_rust_test/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "bitbots_rust_test" +version = "0.1.0" +authors = ["Florian Vahl "] +edition = "2021" + +[dependencies] +r2r = "0.9" +futures = "0.3.15" +tokio = { version = "1", features = ["full"] } diff --git a/src/bitbots_rust_test/package.xml b/src/bitbots_rust_test/package.xml new file mode 100644 index 0000000000..d7fd98ceb3 --- /dev/null +++ b/src/bitbots_rust_test/package.xml @@ -0,0 +1,25 @@ + + + + bitbots_rust_test + 0.0.1 + Examples of a minimal r2r node + Florian Vahl + MIT + Florian Vahl + + ament_cmake + + rcl + std_msgs + bitbots_msgs + + rcl + std_msgs + bitbots_msgs + rosgraph_msgs + + + ament_cmake + + diff --git a/src/bitbots_rust_test/r2r_cargo.cmake b/src/bitbots_rust_test/r2r_cargo.cmake new file mode 100644 index 0000000000..77a9523d42 --- /dev/null +++ b/src/bitbots_rust_test/r2r_cargo.cmake @@ -0,0 +1,87 @@ + +# Need at least 3.21 for IMPORTED_TARGETS property that we rely on. +# NOTE! Ubuntu 20.04 comes 3.16.3 by default, so to use this you need +# to update cmake. This can be done by adding the kitware apt repo: +# https://apt.kitware.com +cmake_minimum_required(VERSION "3.21") + +# traverse dependencies for all message packages. +function(get_idl_deps OUT_PKG_DIRS PKG) + find_package(${PKG} REQUIRED) + target_link_libraries(dummy INTERFACE ${${PKG}_LIBRARIES}) + include_directories(dummy ${${PKG}_INCLUDE_DIRS}) + + list(APPEND VISITED_TARGETS ${PKG}) + + # only keep track of packages that include idl files + set(PKG_DIRS "") + if(DEFINED ${PKG}_IDL_FILES) + list(APPEND PKG_DIRS ${${PKG}_DIR}) + endif() + + foreach(LIB ${${PKG}_DEPENDENCIES}) + list(FIND VISITED_TARGETS ${LIB} VISITED) + if (${VISITED} EQUAL -1) + get_idl_deps(NEW_PKG_DIRS ${LIB}) + list(APPEND PKG_DIRS ${NEW_PKG_DIRS}) + list(REMOVE_DUPLICATES PKG_DIRS) + endif() + endforeach() + set(VISITED_TARGETS ${VISITED_TARGETS} PARENT_SCOPE) + set(${OUT_PKG_DIRS} ${PKG_DIRS} PARENT_SCOPE) +endfunction() + +function(r2r_cargo) + # pretend that we want to compile c code to get all library paths etc... + add_library(dummy INTERFACE) + + # traverse list of wanted packages to add dependencies + foreach(f ${ARGN}) + find_package(${f} REQUIRED) + set(REC_PKG_DIRS "") + get_idl_deps(REC_PKG_DIRS ${f}) + list(APPEND CMAKE_IDL_PACKAGES "${REC_PKG_DIRS}") + endforeach() + + list(REMOVE_DUPLICATES CMAKE_IDL_PACKAGES) + string (REPLACE ";" ":" CMAKE_IDL_PACKAGES_STR "${CMAKE_IDL_PACKAGES}") + set(ENV{CMAKE_IDL_PACKAGES} ${CMAKE_IDL_PACKAGES_STR}) + + # On OSX colcon eats the DYLD_LIBRARY_PATH... so we need to add the rpaths + # manually... + set(RUSTFLAGS "") + + # get imported libs + get_property(importTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS) + + foreach(p ${importTargets}) + get_property(_LIBLOC TARGET "${p}" PROPERTY LOCATION) + if(DEFINED _LIBLOC) + list(APPEND CMAKE_LIBRARIES "${_LIBLOC}") + get_filename_component(_PARENT "${_LIBLOC}" DIRECTORY) + if(IS_DIRECTORY ${_PARENT}) + list(APPEND RUSTFLAGS "-C link-arg=-Wl,-rpath,${_PARENT}") + endif() + endif() + endforeach() + + list(REMOVE_DUPLICATES RUSTFLAGS) + string (REPLACE ";" " " RUSTFLAGS_STR "${RUSTFLAGS}") + set(ENV{RUSTFLAGS} ${RUSTFLAGS_STR}) + + # get include paths + get_property(includeDirs DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY INCLUDE_DIRECTORIES) + list(REMOVE_DUPLICATES includeDirs) + string (REPLACE ";" ":" CMAKE_INCLUDE_DIRS_STR "${includeDirs}") + set(ENV{CMAKE_INCLUDE_DIRS} ${CMAKE_INCLUDE_DIRS_STR}) + + add_custom_target(cargo_target ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon" "--quiet" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + + +endfunction() diff --git a/src/bitbots_rust_test/src/main.rs b/src/bitbots_rust_test/src/main.rs new file mode 100644 index 0000000000..4cb681626d --- /dev/null +++ b/src/bitbots_rust_test/src/main.rs @@ -0,0 +1,99 @@ +use std::sync::{Arc, Mutex as StdMutex}; +use tokio::sync::Mutex; + +use futures::StreamExt; +use r2r::bitbots_msgs::msg::Workload; +use r2r::bitbots_msgs::srv::Leds; +use r2r::std_msgs::msg::Empty; +use r2r::RosParams; + +#[derive(RosParams, Default, Debug)] +struct Params { + /// Parameter description (Yes this comment will appear in the parameter description) + par1: f64, + /// Dummy parameter [m/s] + par2: i32, + nested: NestedParams, +} + +#[derive(RosParams, Default, Debug)] +struct NestedParams { + par3: String, + par4: u16, +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let ctx = r2r::Context::create()?; + + // Create a node + let mut node = r2r::Node::create(ctx, "test_node", "")?; + + // Get a logger name for easier logging + let nl = node.logger().to_string(); + + // Create subscribers, publishers, services, timers, etc. + let mut sub = node + .subscribe::("/hello_world", r2r::QosProfile::default())? + .fuse(); + let mut timer = node.create_timer(std::time::Duration::from_secs_f32(0.05))?; + let mut timer1 = node.create_timer(std::time::Duration::from_secs_f32(0.1))?; + let publ = node.create_publisher::("/out", r2r::QosProfile::default())?; + let mut srv = node + .create_service::("/led", r2r::QosProfile::default())? + .fuse(); + + // Parameter handling + let params = Arc::new(StdMutex::new(Params::default())); + let (paramater_handler, _) = + node.make_derived_parameter_handler(params.clone())?; + tokio::task::spawn(paramater_handler); + + println!("Sim time is set to: {}", node.get_parameter::("use_sim_time").unwrap()); + + // Share the node between tasks / threads + let node = Arc::new(Mutex::new(node)); + let spin_node = node.clone(); + + tokio::task::spawn(async move { + // Define a thread-local state + let mut state = Workload::default(); + + // Handle events + loop { + tokio::select! { + req = srv.next() => { + let req = req.unwrap(); + r2r::log_info!(&nl, "leds: {:?}", req.message); + // Flush the stdout buffer to ensure the print appears in the logs + let resp = Leds::Response::default(); + req.respond(resp).unwrap(); + }, + msg = sub.next() => { + r2r::log_info!(&nl, "message: {:?}", msg); + // Flush the stdout buffer to ensure the print appears in the logs + state.memory_used += 1; + }, + _ = timer.tick() => { + publ.publish(&Empty {}).inspect_err(|e| { + r2r::log_error!(&nl, "Error publishing message: {}", e); + }).ok(); + r2r::log_info!(&nl, "timer tick {}", state.memory_used); + }, + _ = timer1.tick() => { + let my_param = node.lock().await.get_parameter::("par1").unwrap(); + r2r::log_info!(&nl, "Parameter par1: {}", my_param); + r2r::log_info!(&nl, "timer1 tick {}", state.memory_used); + }, + } + } + }); + + // Spin the underlying rcl node object + loop { + spin_node + .lock() + .await + .spin_once(std::time::Duration::from_millis(100)); + } +} From 087370b27cdea0bec2f1be53db9db79e6f4e5526 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 23 Dec 2025 01:11:51 +0100 Subject: [PATCH 09/48] Add shared cargo cmake pkg --- src/bitbots_misc/bitbots_cargo/CMakeLists.txt | 6 ++++++ .../cmake/bitbots_cargo.cmake.in} | 2 -- src/bitbots_misc/bitbots_cargo/package.xml | 19 +++++++++++++++++++ src/bitbots_rust_test/CMakeLists.txt | 3 +-- src/bitbots_rust_test/package.xml | 1 + src/bitbots_rust_test/src/main.rs | 8 +++++--- 6 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 src/bitbots_misc/bitbots_cargo/CMakeLists.txt rename src/{bitbots_rust_test/r2r_cargo.cmake => bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in} (99%) create mode 100644 src/bitbots_misc/bitbots_cargo/package.xml diff --git a/src/bitbots_misc/bitbots_cargo/CMakeLists.txt b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt new file mode 100644 index 0000000000..1521d927d4 --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_cargo) + +find_package(ament_cmake REQUIRED) + +ament_package(CONFIG_EXTRAS cmake/bitbots_cargo.cmake.in) diff --git a/src/bitbots_rust_test/r2r_cargo.cmake b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in similarity index 99% rename from src/bitbots_rust_test/r2r_cargo.cmake rename to src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in index 77a9523d42..f790e54487 100644 --- a/src/bitbots_rust_test/r2r_cargo.cmake +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -82,6 +82,4 @@ function(r2r_cargo) VERBATIM ) - - endfunction() diff --git a/src/bitbots_misc/bitbots_cargo/package.xml b/src/bitbots_misc/bitbots_cargo/package.xml new file mode 100644 index 0000000000..153d2a900e --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/package.xml @@ -0,0 +1,19 @@ + + + + bitbots_cargo + 1.0.0 + CMake helper for Rust based Bit-Bots packages. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + + + ament_cmake + + diff --git a/src/bitbots_rust_test/CMakeLists.txt b/src/bitbots_rust_test/CMakeLists.txt index a442846234..c811b5025f 100644 --- a/src/bitbots_rust_test/CMakeLists.txt +++ b/src/bitbots_rust_test/CMakeLists.txt @@ -2,13 +2,12 @@ cmake_minimum_required(VERSION 3.5) project(bitbots_rust_test) find_package(ament_cmake REQUIRED) +find_package(bitbots_cargo REQUIRED) if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS) set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings") endif() -include(r2r_cargo.cmake) - # put ros package dependencies here. r2r_cargo(std_msgs # just to test that it works rcl # we need the c ros2 api diff --git a/src/bitbots_rust_test/package.xml b/src/bitbots_rust_test/package.xml index d7fd98ceb3..18aa042f17 100644 --- a/src/bitbots_rust_test/package.xml +++ b/src/bitbots_rust_test/package.xml @@ -18,6 +18,7 @@ std_msgs bitbots_msgs rosgraph_msgs + bitbots_cargo ament_cmake diff --git a/src/bitbots_rust_test/src/main.rs b/src/bitbots_rust_test/src/main.rs index 4cb681626d..4a4c99b36b 100644 --- a/src/bitbots_rust_test/src/main.rs +++ b/src/bitbots_rust_test/src/main.rs @@ -45,11 +45,13 @@ async fn main() -> Result<(), Box> { // Parameter handling let params = Arc::new(StdMutex::new(Params::default())); - let (paramater_handler, _) = - node.make_derived_parameter_handler(params.clone())?; + let (paramater_handler, _) = node.make_derived_parameter_handler(params.clone())?; tokio::task::spawn(paramater_handler); - println!("Sim time is set to: {}", node.get_parameter::("use_sim_time").unwrap()); + println!( + "Sim time is set to: {}", + node.get_parameter::("use_sim_time").unwrap() + ); // Share the node between tasks / threads let node = Arc::new(Mutex::new(node)); From 62fe4e268c9ffea5597023933e48fb36e42d6ae5 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 23 Dec 2025 01:18:17 +0100 Subject: [PATCH 10/48] Use workspace for python rust module --- Cargo.lock | 5043 +++++++++++++++-- Cargo.toml | 1 + .../bitbots_rust_nav/Cargo.lock | 4338 -------------- 3 files changed, 4448 insertions(+), 4934 deletions(-) delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock index 60e67e4831..ff4b69e8cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,1070 +3,4921 @@ version = 4 [[package]] -name = "aho-corasick" -version = "1.1.4" +name = "ab_glyph" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ - "memchr", + "ab_glyph_rasterizer", + "owned_ttf_parser", ] [[package]] -name = "bindgen" -version = "0.71.1" +name = "ab_glyph_rasterizer" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn", -] +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] -name = "bitbots_rust_test" -version = "0.1.0" +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" + +[[package]] +name = "accesskit_atspi_common" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" dependencies = [ - "futures", - "r2r", - "tokio", + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", ] [[package]] -name = "bitflags" -version = "2.10.0" +name = "accesskit_consumer" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit", + "hashbrown 0.15.5", + "immutable-chunkmap", +] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "accesskit_macos" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" dependencies = [ - "generic-array", + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", ] [[package]] -name = "bumpalo" -version = "3.19.1" +name = "accesskit_unix" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] [[package]] -name = "bytes" -version = "1.11.0" +name = "accesskit_windows" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "paste", + "static_assertions", + "windows", + "windows-core", +] [[package]] -name = "cexpr" -version = "0.6.0" +name = "accesskit_winit" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" dependencies = [ - "nom", + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", ] [[package]] -name = "cfg-if" -version = "1.0.4" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] -name = "clang-sys" -version = "1.8.1" +name = "ahash" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "glob", - "libc", - "libloading", + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "aho-corasick" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ - "libc", + "memchr", ] [[package]] -name = "crossbeam-deque" -version = "0.8.6" +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "android-activity" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ - "crossbeam-utils", + "android-properties", + "bitflags 2.10.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", ] [[package]] -name = "crossbeam-utils" -version = "0.8.21" +name = "android-properties" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" [[package]] -name = "crypto-common" -version = "0.1.7" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "generic-array", - "typenum", + "libc", ] [[package]] -name = "digest" -version = "0.10.7" +name = "approx" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" dependencies = [ - "block-buffer", - "crypto-common", + "num-traits", ] [[package]] -name = "either" -version = "1.15.0" +name = "arboard" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "image", + "log", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "x11rb", +] [[package]] -name = "equivalent" -version = "1.0.2" +name = "arrayref" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] -name = "force-send-sync" -version = "1.2.0" +name = "arrayvec" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5682bd193aa441fe571a005561e0c0ada74f89ec2dc390483a6ff17c0665b9" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "futures" -version = "0.3.31" +name = "as-raw-xcb-connection" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] -name = "futures-channel" -version = "0.3.31" +name = "ash" +version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "futures-core", - "futures-sink", + "libloading", ] [[package]] -name = "futures-core" -version = "0.3.31" +name = "async-broadcast" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] [[package]] -name = "futures-executor" -version = "0.3.31" +name = "async-channel" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ + "concurrent-queue", + "event-listener-strategy", "futures-core", - "futures-task", - "futures-util", + "pin-project-lite", ] [[package]] -name = "futures-io" -version = "0.3.31" +name = "async-executor" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] [[package]] -name = "futures-macro" -version = "0.3.31" +name = "async-fs" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ - "proc-macro2", - "quote", - "syn", + "async-lock", + "blocking", + "futures-lite", ] [[package]] -name = "futures-sink" -version = "0.3.31" +name = "async-io" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.2", + "slab", + "windows-sys 0.61.2", +] [[package]] -name = "futures-task" -version = "0.3.31" +name = "async-lock" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] [[package]] -name = "futures-util" -version = "0.3.31" +name = "async-process" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.2", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "async-recursion" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ - "typenum", - "version_check", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "getrandom" -version = "0.3.4" +name = "async-signal" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ + "async-io", + "async-lock", + "atomic-waker", "cfg-if", - "libc", - "r-efi", - "wasip2", + "futures-core", + "futures-io", + "rustix 1.1.2", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", ] [[package]] -name = "glob" -version = "0.3.3" +name = "async-task" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] -name = "hashbrown" -version = "0.16.1" +name = "async-trait" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] -name = "indexmap" -version = "2.12.1" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" -dependencies = [ - "equivalent", - "hashbrown", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "itertools" -version = "0.10.5" +name = "atspi" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" dependencies = [ - "either", + "atspi-common", + "atspi-connection", + "atspi-proxies", ] [[package]] -name = "itertools" -version = "0.13.0" +name = "atspi-common" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" dependencies = [ - "either", + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", ] [[package]] -name = "itoa" -version = "1.0.16" +name = "atspi-connection" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] [[package]] -name = "js-sys" -version = "0.3.83" +name = "atspi-proxies" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" dependencies = [ - "once_cell", - "wasm-bindgen", + "atspi-common", + "serde", + "zbus", + "zvariant", ] [[package]] -name = "lazy_static" +name = "autocfg" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "libc" -version = "0.2.178" +name = "bindgen" +version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn", +] [[package]] -name = "libloading" -version = "0.8.9" +name = "bit-set" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "cfg-if", - "windows-link", + "bit-vec", ] [[package]] -name = "lock_api" -version = "0.4.14" +name = "bit-vec" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitbots_rust_nav" +version = "0.1.2" dependencies = [ - "scopeguard", + "eframe", + "geo", + "keyed_priority_queue", + "ordered-float", + "pyo3", + "rand 0.9.2", ] [[package]] -name = "log" -version = "0.4.29" +name = "bitbots_rust_test" +version = "0.1.0" +dependencies = [ + "futures", + "r2r", + "tokio", +] + +[[package]] +name = "bitflags" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "memchr" -version = "2.7.6" +name = "bitflags" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "block" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] -name = "mio" -version = "1.1.1" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", + "generic-array", ] [[package]] -name = "nom" -version = "7.1.3" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "memchr", - "minimal-lexical", + "objc2 0.5.2", ] [[package]] -name = "once_cell" -version = "1.21.3" +name = "blocking" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] [[package]] -name = "os_str_bytes" -version = "6.6.1" +name = "bumpalo" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" -dependencies = [ - "memchr", -] +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] -name = "parking_lot" -version = "0.12.5" +name = "bytemuck" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ - "lock_api", - "parking_lot_core", + "bytemuck_derive", ] [[package]] -name = "parking_lot_core" -version = "0.9.12" +name = "bytemuck_derive" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "paste" -version = "1.0.15" +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "phf" -version = "0.11.3" +name = "byteorder-lite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "phf_macros", - "phf_shared", + "bitflags 2.10.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", ] [[package]] -name = "phf_generator" -version = "0.11.3" +name = "calloop" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" dependencies = [ - "phf_shared", - "rand", + "bitflags 2.10.0", + "polling", + "rustix 1.1.2", + "slab", + "tracing", ] [[package]] -name = "phf_macros" -version = "0.11.3" +name = "calloop-wayland-source" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn", + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", ] [[package]] -name = "phf_shared" -version = "0.11.3" +name = "calloop-wayland-source" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "siphasher", + "calloop 0.14.3", + "rustix 1.1.2", + "wayland-backend", + "wayland-client", ] [[package]] -name = "pin-project-lite" -version = "0.2.16" +name = "cc" +version = "1.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "cesu8" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] -name = "prettyplease" -version = "0.2.37" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "proc-macro2", - "syn", + "nom", ] [[package]] -name = "proc-macro2" -version = "1.0.103" +name = "cfg-if" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" -dependencies = [ - "unicode-ident", -] +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] -name = "quote" -version = "1.0.42" +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" -dependencies = [ - "proc-macro2", -] +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "r-efi" -version = "5.3.0" +name = "cgl" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] [[package]] -name = "r2r" -version = "0.9.5" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b36b61a6252e8e7a24919b9877dacf1dc9f0ac4c2d0eba91c68b35c1b2283ed2" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ - "force-send-sync", - "futures", - "indexmap", - "lazy_static", - "log", - "phf", - "prettyplease", - "proc-macro2", - "quote", - "r2r_actions", - "r2r_common", - "r2r_macros", - "r2r_msg_gen", - "r2r_rcl", - "rayon", - "serde", - "serde_json", - "syn", - "thiserror", - "uuid", + "glob", + "libc", + "libloading", ] [[package]] -name = "r2r_actions" -version = "0.9.5" +name = "clipboard-win" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca8488195951aaadef421b470c823cd095848bebf2004ff96ef5d351067eac1" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ - "bindgen", - "r2r_common", - "r2r_msg_gen", - "r2r_rcl", + "error-code", ] [[package]] -name = "r2r_common" -version = "0.9.5" +name = "codespan-reporting" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ - "bindgen", - "os_str_bytes", - "regex", - "sha2", + "termcolor", + "unicode-width", ] [[package]] -name = "r2r_macros" -version = "0.9.5" +name = "combine" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "proc-macro2", - "quote", - "syn", + "bytes", + "memchr", ] [[package]] -name = "r2r_msg_gen" -version = "0.9.5" +name = "concurrent-queue" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d5e77385a6b959014c14c45a444e1fbff99afad70912e120c21c30e7a65488" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ - "bindgen", - "force-send-sync", - "itertools 0.10.5", - "phf", - "proc-macro2", - "quote", - "r2r_common", - "r2r_rcl", - "rayon", - "syn", + "crossbeam-utils", ] [[package]] -name = "r2r_rcl" -version = "0.9.5" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "bindgen", - "paste", - "r2r_common", - "widestring", + "core-foundation-sys", + "libc", ] [[package]] -name = "rand" -version = "0.8.5" +name = "core-foundation" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ - "rand_core", + "core-foundation-sys", + "libc", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "rayon" -version = "1.11.0" +name = "core-graphics" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ - "either", - "rayon-core", + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types", + "libc", ] [[package]] -name = "rayon-core" -version = "1.13.0" +name = "core-graphics-types" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", ] [[package]] -name = "redox_syscall" -version = "0.5.18" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ - "bitflags", + "libc", ] [[package]] -name = "regex" -version = "1.12.2" +name = "crc32fast" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "cfg-if", ] [[package]] -name = "regex-automata" -version = "0.4.13" +name = "crossbeam-deque" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "regex-syntax" -version = "0.8.8" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] [[package]] -name = "rustc-hash" -version = "2.1.1" +name = "crossbeam-utils" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "rustversion" -version = "1.0.22" +name = "crunchy" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] -name = "ryu" -version = "1.0.21" +name = "crypto-common" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] [[package]] -name = "scopeguard" +name = "cursor-icon" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] -name = "serde" -version = "1.0.228" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "serde_core", - "serde_derive", + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "earcutr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" +dependencies = [ + "itertools 0.11.0", + "num-traits", +] + +[[package]] +name = "ecolor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" +dependencies = [ + "bytemuck", + "emath", +] + +[[package]] +name = "eframe" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.59.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" +dependencies = [ + "accesskit", + "ahash", + "bitflags 2.10.0", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", +] + +[[package]] +name = "egui-wgpu" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" +dependencies = [ + "accesskit_winit", + "ahash", + "arboard", + "bytemuck", + "egui", + "log", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "emath" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "epaint" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", ] [[package]] -name = "serde_core" -version = "1.0.228" +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float_next_after" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "force-send-sync" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5682bd193aa441fe571a005561e0c0ada74f89ec2dc390483a6ff17c0665b9" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "geo" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f0e6e028c581e82e6822a68869514e94c25e7f8ea669a2d8595bdf7461ccc5" +dependencies = [ + "earcutr", + "float_next_after", + "geo-types", + "geographiclib-rs", + "i_overlay", + "log", + "num-traits", + "robust", + "rstar", + "spade", +] + +[[package]] +name = "geo-types" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f8647af4005fa11da47cd56252c6ef030be8fa97bdbf355e7dfb6348f0a82c" +dependencies = [ + "approx", + "num-traits", + "rayon", + "rstar", + "serde", +] + +[[package]] +name = "geographiclib-rs" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" +dependencies = [ + "libm", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.2", + "windows-link", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.10.0", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.10.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.10.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "i_float" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775f9961a8d2f879725da8aff789bb20a3ddf297473e0c90af75e69313919490" +dependencies = [ + "serde", +] + +[[package]] +name = "i_key_sort" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" + +[[package]] +name = "i_overlay" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01882ce5ed786bf6e8f5167f171a4026cd129ce17d9ff5cbf1e6749b98628ece" +dependencies = [ + "i_float", + "i_key_sort", + "i_shape", + "i_tree", + "rayon", +] + +[[package]] +name = "i_shape" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dbe9e5238d6b9c694c08415bf00fb370b089949bd818ab01f41f8927b8774c" +dependencies = [ + "i_float", + "serde", +] + +[[package]] +name = "i_tree" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3e98b1520e49e252237edc238a39869da9f3241f2ec19dc788c1d24694d1e4" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keyed_priority_queue" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +dependencies = [ + "indexmap", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.178" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +dependencies = [ + "bitflags 2.10.0", + "libc", + "redox_syscall 0.6.0", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +dependencies = [ + "bitflags 2.10.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.10.0", + "cfg_aliases", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "rustc-hash 1.1.0", + "spirv", + "strum", + "termcolor", + "thiserror 2.0.17", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.10.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.10.0", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "orbclient" +version = "0.3.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +dependencies = [ + "memchr", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +dependencies = [ + "bitflags 2.10.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "pxfm" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "pyo3" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r2r" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b36b61a6252e8e7a24919b9877dacf1dc9f0ac4c2d0eba91c68b35c1b2283ed2" +dependencies = [ + "force-send-sync", + "futures", + "indexmap", + "lazy_static", + "log", + "phf", + "prettyplease", + "proc-macro2", + "quote", + "r2r_actions", + "r2r_common", + "r2r_macros", + "r2r_msg_gen", + "r2r_rcl", + "rayon", + "serde", + "serde_json", + "syn", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "r2r_actions" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca8488195951aaadef421b470c823cd095848bebf2004ff96ef5d351067eac1" +dependencies = [ + "bindgen", + "r2r_common", + "r2r_msg_gen", + "r2r_rcl", +] + +[[package]] +name = "r2r_common" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +dependencies = [ + "bindgen", + "os_str_bytes", + "regex", + "sha2", +] + +[[package]] +name = "r2r_macros" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "r2r_msg_gen" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03d5e77385a6b959014c14c45a444e1fbff99afad70912e120c21c30e7a65488" +dependencies = [ + "bindgen", + "force-send-sync", + "itertools 0.10.5", + "phf", + "proc-macro2", + "quote", + "r2r_common", + "r2r_rcl", + "rayon", + "syn", +] + +[[package]] +name = "r2r_rcl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +dependencies = [ + "bindgen", + "paste", + "r2r_common", + "widestring", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "redox_syscall" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "robust" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" + +[[package]] +name = "rstar" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" +dependencies = [ + "heapless", + "num-traits", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.14.3", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.2", + "thiserror 2.0.17", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "spade" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb313e1c8afee5b5647e00ee0fe6855e3d529eb863a0fdae1d60006c4d1e9990" +dependencies = [ + "hashbrown 0.15.5", + "num-traits", + "robust", + "smallvec", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "target-lexicon" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba" + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.1", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unindent" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs", + "rustix 1.1.2", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.10.0", + "rustix 1.1.2", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.10.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +dependencies = [ + "rustix 1.1.2", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfe33d551eb8bffd03ff067a8b44bb963919157841a99957151299a6307d19c" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.5", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2 0.6.3", + "objc2-foundation 0.3.2", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + +[[package]] +name = "wgpu" +version = "24.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" +dependencies = [ + "arrayvec", + "bitflags 2.10.0", + "cfg_aliases", + "document-features", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "24.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.10.0", + "cfg_aliases", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.17", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "24.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.10.0", + "bytemuck", + "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "ordered-float", + "parking_lot", + "profiling", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.17", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows", +] + +[[package]] +name = "wgpu-types" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +dependencies = [ + "bitflags 2.10.0", + "js-sys", + "log", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] -name = "serde_derive" -version = "1.0.228" +name = "windows_x86_64_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "serde_json" -version = "1.0.146" +name = "windows_x86_64_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", - "serde_core", -] +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] -name = "sha2" -version = "0.10.9" +name = "windows_x86_64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] -name = "shlex" -version = "1.3.0" +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "signal-hook-registry" -version = "1.4.7" +name = "windows_x86_64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winit" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.10.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] -name = "siphasher" -version = "1.0.1" +name = "winnow" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] [[package]] -name = "slab" -version = "0.4.11" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] -name = "smallvec" -version = "1.15.1" +name = "writeable" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] -name = "socket2" -version = "0.6.1" +name = "x11-dl" +version = "2.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" dependencies = [ "libc", - "windows-sys 0.60.2", + "once_cell", + "pkg-config", ] [[package]] -name = "syn" -version = "2.0.111" +name = "x11rb" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.2", + "x11rb-protocol", ] [[package]] -name = "thiserror" -version = "1.0.69" +name = "x11rb-protocol" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl", -] +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] -name = "thiserror-impl" -version = "1.0.69" +name = "xcursor" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" [[package]] -name = "tokio" -version = "1.48.0" +name = "xdg-home" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ - "bytes", "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] -name = "tokio-macros" -version = "2.6.0" +name = "xkbcommon-dl" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "proc-macro2", - "quote", - "syn", + "bitflags 2.10.0", + "dlib", + "log", + "once_cell", + "xkeysym", ] [[package]] -name = "typenum" -version = "1.19.0" +name = "xkeysym" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] -name = "unicode-ident" -version = "1.0.22" +name = "xml-rs" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] -name = "uuid" -version = "1.19.0" +name = "yoke" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "getrandom", - "js-sys", - "serde_core", - "wasm-bindgen", + "stable_deref_trait", + "yoke-derive", + "zerofrom", ] [[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" +name = "yoke-derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] [[package]] -name = "wasip2" -version = "1.0.1+wasi-0.2.4" +name = "zbus" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ - "wit-bindgen", + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", ] [[package]] -name = "wasm-bindgen" -version = "0.2.106" +name = "zbus-lockstep" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", + "zbus_xml", + "zvariant", ] [[package]] -name = "wasm-bindgen-macro" -version = "0.2.106" +name = "zbus-lockstep-macros" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ + "proc-macro2", "quote", - "wasm-bindgen-macro-support", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.106" +name = "zbus_macros" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ - "bumpalo", + "proc-macro-crate", "proc-macro2", "quote", "syn", - "wasm-bindgen-shared", + "zvariant_utils", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.106" +name = "zbus_names" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ - "unicode-ident", + "serde", + "static_assertions", + "zvariant", ] [[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - -[[package]] -name = "windows-link" -version = "0.2.1" +name = "zbus_xml" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +dependencies = [ + "quick-xml 0.30.0", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] [[package]] -name = "windows-sys" -version = "0.60.2" +name = "zerocopy" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ - "windows-targets", + "zerocopy-derive", ] [[package]] -name = "windows-sys" -version = "0.61.2" +name = "zerocopy-derive" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ - "windows-link", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "windows-targets" -version = "0.53.5" +name = "zerofrom" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "zerofrom-derive", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" +name = "zerotrie" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] [[package]] -name = "windows_i686_gnu" -version = "0.53.1" +name = "zerovec" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] [[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" +name = "zerovec-derive" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] -name = "windows_i686_msvc" -version = "0.53.1" +name = "zune-core" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" +name = "zune-jpeg" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core", +] [[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" +name = "zvariant" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" +name = "zvariant_derive" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] [[package]] -name = "wit-bindgen" -version = "0.46.0" +name = "zvariant_utils" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 5b02be3ebf..6a4e98d5e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "src/bitbots_rust_test", + "src/bitbots_navigation/bitbots_rust_nav" ] # Optional but recommended for modern Cargo diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock b/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock deleted file mode 100644 index 27aba76791..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock +++ /dev/null @@ -1,4338 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "ab_glyph" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" - -[[package]] -name = "accesskit" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" - -[[package]] -name = "accesskit_atspi_common" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" -dependencies = [ - "accesskit", - "accesskit_consumer", - "atspi-common", - "serde", - "thiserror 1.0.69", - "zvariant", -] - -[[package]] -name = "accesskit_consumer" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" -dependencies = [ - "accesskit", - "hashbrown", - "immutable-chunkmap", -] - -[[package]] -name = "accesskit_macos" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "accesskit_unix" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" -dependencies = [ - "accesskit", - "accesskit_atspi_common", - "async-channel", - "async-executor", - "async-task", - "atspi", - "futures-lite", - "futures-util", - "serde", - "zbus", -] - -[[package]] -name = "accesskit_windows" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown", - "paste", - "static_assertions", - "windows", - "windows-core", -] - -[[package]] -name = "accesskit_winit" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" -dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_unix", - "accesskit_windows", - "raw-window-handle", - "winit", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.3", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "android-activity" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" -dependencies = [ - "android-properties", - "bitflags 2.9.1", - "cc", - "cesu8", - "jni", - "jni-sys", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys 0.6.0+11769913", - "num_enum", - "thiserror 1.0.69", -] - -[[package]] -name = "android-properties" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "arboard" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" -dependencies = [ - "clipboard-win", - "image", - "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", - "parking_lot", - "percent-encoding", - "windows-sys 0.59.0", - "x11rb", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix 1.0.7", - "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix 1.0.7", - "tracing", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-signal" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix 1.0.7", - "signal-hook-registry", - "slab", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atspi" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" -dependencies = [ - "atspi-common", - "atspi-connection", - "atspi-proxies", -] - -[[package]] -name = "atspi-common" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" -dependencies = [ - "enumflags2", - "serde", - "static_assertions", - "zbus", - "zbus-lockstep", - "zbus-lockstep-macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "atspi-connection" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" -dependencies = [ - "atspi-common", - "atspi-proxies", - "futures-lite", - "zbus", -] - -[[package]] -name = "atspi-proxies" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" -dependencies = [ - "atspi-common", - "serde", - "zbus", - "zvariant", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitbots_rust_nav" -version = "0.1.2" -dependencies = [ - "eframe", - "geo", - "keyed_priority_queue", - "ordered-float", - "pyo3", - "rand 0.9.3", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" -dependencies = [ - "serde", -] - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2 0.5.2", -] - -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "bumpalo" -version = "3.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" - -[[package]] -name = "bytemuck" -version = "1.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "calloop" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" -dependencies = [ - "bitflags 2.9.1", - "log", - "polling", - "rustix 0.38.44", - "slab", - "thiserror 1.0.69", -] - -[[package]] -name = "calloop-wayland-source" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" -dependencies = [ - "calloop", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - -[[package]] -name = "cc" -version = "1.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfg-if" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cgl" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" -dependencies = [ - "libc", -] - -[[package]] -name = "clipboard-win" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" -dependencies = [ - "error-code", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cursor-icon" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading", -] - -[[package]] -name = "document-features" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" -dependencies = [ - "litrs", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" - -[[package]] -name = "earcutr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" -dependencies = [ - "itertools", - "num-traits", -] - -[[package]] -name = "ecolor" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" -dependencies = [ - "bytemuck", - "emath", -] - -[[package]] -name = "eframe" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" -dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "egui-wgpu", - "egui-winit", - "egui_glow", - "glow", - "glutin", - "glutin-winit", - "image", - "js-sys", - "log", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "parking_lot", - "percent-encoding", - "profiling", - "raw-window-handle", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "web-time", - "winapi", - "windows-sys 0.59.0", - "winit", -] - -[[package]] -name = "egui" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" -dependencies = [ - "accesskit", - "ahash", - "bitflags 2.9.1", - "emath", - "epaint", - "log", - "nohash-hasher", - "profiling", -] - -[[package]] -name = "egui-wgpu" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" -dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "epaint", - "log", - "profiling", - "thiserror 1.0.69", - "type-map", - "web-time", - "wgpu", - "winit", -] - -[[package]] -name = "egui-winit" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" -dependencies = [ - "accesskit_winit", - "ahash", - "arboard", - "bytemuck", - "egui", - "log", - "profiling", - "raw-window-handle", - "smithay-clipboard", - "web-time", - "webbrowser", - "winit", -] - -[[package]] -name = "egui_glow" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" -dependencies = [ - "ahash", - "bytemuck", - "egui", - "glow", - "log", - "memoffset", - "profiling", - "wasm-bindgen", - "web-sys", - "winit", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "emath" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "endi" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "epaint" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" -dependencies = [ - "ab_glyph", - "ahash", - "bytemuck", - "ecolor", - "emath", - "epaint_default_fonts", - "log", - "nohash-hasher", - "parking_lot", - "profiling", -] - -[[package]] -name = "epaint_default_fonts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "error-code" -version = "3.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" - -[[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "flate2" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "geo" -version = "0.29.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f0e6e028c581e82e6822a68869514e94c25e7f8ea669a2d8595bdf7461ccc5" -dependencies = [ - "earcutr", - "float_next_after", - "geo-types", - "geographiclib-rs", - "i_overlay", - "log", - "num-traits", - "robust", - "rstar", - "spade", -] - -[[package]] -name = "geo-types" -version = "0.7.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ddb1950450d67efee2bbc5e429c68d052a822de3aad010d28b351fbb705224" -dependencies = [ - "approx", - "num-traits", - "rayon", - "rstar", - "serde", -] - -[[package]] -name = "geographiclib-rs" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" -dependencies = [ - "libm", -] - -[[package]] -name = "gethostname" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -dependencies = [ - "libc", - "windows-targets 0.48.5", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "gl_generator" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" -dependencies = [ - "khronos_api", - "log", - "xml-rs", -] - -[[package]] -name = "glow" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" -dependencies = [ - "js-sys", - "slotmap", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "glutin" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" -dependencies = [ - "bitflags 2.9.1", - "cfg_aliases", - "cgl", - "dispatch2", - "glutin_egl_sys", - "glutin_glx_sys", - "glutin_wgl_sys", - "libloading", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "once_cell", - "raw-window-handle", - "wayland-sys", - "windows-sys 0.52.0", - "x11-dl", -] - -[[package]] -name = "glutin-winit" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" -dependencies = [ - "cfg_aliases", - "glutin", - "raw-window-handle", - "winit", -] - -[[package]] -name = "glutin_egl_sys" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" -dependencies = [ - "gl_generator", - "windows-sys 0.52.0", -] - -[[package]] -name = "glutin_glx_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" -dependencies = [ - "gl_generator", - "x11-dl", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.9.1", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.9.1", - "gpu-descriptor-types", - "hashbrown", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "heapless" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" -dependencies = [ - "hash32", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "i_float" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775f9961a8d2f879725da8aff789bb20a3ddf297473e0c90af75e69313919490" -dependencies = [ - "serde", -] - -[[package]] -name = "i_key_sort" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" - -[[package]] -name = "i_overlay" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01882ce5ed786bf6e8f5167f171a4026cd129ce17d9ff5cbf1e6749b98628ece" -dependencies = [ - "i_float", - "i_key_sort", - "i_shape", - "i_tree", - "rayon", -] - -[[package]] -name = "i_shape" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27dbe9e5238d6b9c694c08415bf00fb370b089949bd818ab01f41f8927b8774c" -dependencies = [ - "i_float", - "serde", -] - -[[package]] -name = "i_tree" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" - -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "image" -version = "0.25.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" -dependencies = [ - "bytemuck", - "byteorder-lite", - "num-traits", - "png", - "tiff", -] - -[[package]] -name = "immutable-chunkmap" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "indoc" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "jobserver" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" -dependencies = [ - "getrandom 0.3.3", - "libc", -] - -[[package]] -name = "jpeg-decoder" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "keyed_priority_queue" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" -dependencies = [ - "indexmap", -] - -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - -[[package]] -name = "khronos_api" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" - -[[package]] -name = "libc" -version = "0.2.174" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.2", -] - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.9.1", - "libc", - "redox_syscall 0.5.13", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "litrs" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" - -[[package]] -name = "lock_api" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "memchr" -version = "2.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" - -[[package]] -name = "memmap2" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "metal" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" -dependencies = [ - "bitflags 2.9.1", - "block", - "core-graphics-types", - "foreign-types", - "log", - "objc", - "paste", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "naga" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" -dependencies = [ - "arrayvec", - "bit-set", - "bitflags 2.9.1", - "cfg_aliases", - "codespan-reporting", - "hexf-parse", - "indexmap", - "log", - "rustc-hash 1.1.0", - "spirv", - "strum", - "termcolor", - "thiserror 2.0.12", - "unicode-xid", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.9.1", - "jni-sys", - "log", - "ndk-sys 0.6.0+11769913", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" - -[[package]] -name = "objc2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" -dependencies = [ - "objc-sys", - "objc2-encode", -] - -[[package]] -name = "objc2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" -dependencies = [ - "objc2-encode", -] - -[[package]] -name = "objc2-app-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" -dependencies = [ - "bitflags 2.9.1", - "block2", - "libc", - "objc2 0.5.2", - "objc2-core-data", - "objc2-core-image", - "objc2-foundation 0.2.2", - "objc2-quartz-core", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-data" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-metal", -] - -[[package]] -name = "objc2-core-location" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-contacts", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-foundation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" -dependencies = [ - "bitflags 2.9.1", - "block2", - "dispatch", - "libc", - "objc2 0.5.2", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-link-presentation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-metal" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-metal", -] - -[[package]] -name = "objc2-symbols" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" -dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation 0.2.2", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "orbclient" -version = "0.3.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" -dependencies = [ - "libredox", -] - -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "owned_ttf_parser" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" -dependencies = [ - "ttf-parser", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.13", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "polling" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "profiling" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" - -[[package]] -name = "pyo3" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219" -dependencies = [ - "cfg-if", - "indoc", - "libc", - "memoffset", - "once_cell", - "portable-atomic", - "pyo3-build-config", - "pyo3-ffi", - "pyo3-macros", - "unindent", -] - -[[package]] -name = "pyo3-build-config" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999" -dependencies = [ - "once_cell", - "target-lexicon", -] - -[[package]] -name = "pyo3-ffi" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33" -dependencies = [ - "libc", - "pyo3-build-config", -] - -[[package]] -name = "pyo3-macros" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9" -dependencies = [ - "proc-macro2", - "pyo3-macros-backend", - "quote", - "syn", -] - -[[package]] -name = "pyo3-macros-backend" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a" -dependencies = [ - "heck", - "proc-macro2", - "pyo3-build-config", - "quote", - "syn", -] - -[[package]] -name = "quick-xml" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "renderdoc-sys" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" - -[[package]] -name = "robust" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" - -[[package]] -name = "rstar" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" -dependencies = [ - "heapless", - "num-traits", - "smallvec", -] - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sctk-adwaita" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" -dependencies = [ - "ab_glyph", - "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia", -] - -[[package]] -name = "serde" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "slotmap" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" -dependencies = [ - "version_check", -] - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "smithay-client-toolkit" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" -dependencies = [ - "bitflags 2.9.1", - "calloop", - "calloop-wayland-source", - "cursor-icon", - "libc", - "log", - "memmap2", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "xkeysym", -] - -[[package]] -name = "smithay-clipboard" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" -dependencies = [ - "libc", - "smithay-client-toolkit", - "wayland-backend", -] - -[[package]] -name = "smol_str" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" -dependencies = [ - "serde", -] - -[[package]] -name = "spade" -version = "2.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ece03ff43cd2a9b57ebf776ea5e78bd30b3b4185a619f041079f4109f385034" -dependencies = [ - "hashbrown", - "num-traits", - "robust", - "smallvec", -] - -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strict-num" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "target-lexicon" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" - -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl 2.0.12", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tiff" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" -dependencies = [ - "flate2", - "jpeg-decoder", - "weezl", -] - -[[package]] -name = "tiny-skia" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" -dependencies = [ - "arrayref", - "arrayvec", - "bytemuck", - "cfg-if", - "log", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] - -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - -[[package]] -name = "type-map" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" -dependencies = [ - "rustc-hash 2.1.1", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unindent" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wayland-backend" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" -dependencies = [ - "cc", - "downcast-rs", - "rustix 0.38.44", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" -dependencies = [ - "bitflags 2.9.1", - "rustix 0.38.44", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-csd-frame" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" -dependencies = [ - "bitflags 2.9.1", - "cursor-icon", - "wayland-backend", -] - -[[package]] -name = "wayland-cursor" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" -dependencies = [ - "rustix 0.38.44", - "wayland-client", - "xcursor", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-plasma" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" -dependencies = [ - "proc-macro2", - "quick-xml 0.37.5", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" -dependencies = [ - "dlib", - "log", - "once_cell", - "pkg-config", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webbrowser" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" -dependencies = [ - "core-foundation 0.10.1", - "jni", - "log", - "ndk-context", - "objc2 0.6.1", - "objc2-foundation 0.3.1", - "url", - "web-sys", -] - -[[package]] -name = "weezl" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" - -[[package]] -name = "wgpu" -version = "24.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" -dependencies = [ - "arrayvec", - "bitflags 2.9.1", - "cfg_aliases", - "document-features", - "js-sys", - "log", - "parking_lot", - "profiling", - "raw-window-handle", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-core" -version = "24.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" -dependencies = [ - "arrayvec", - "bit-vec", - "bitflags 2.9.1", - "cfg_aliases", - "document-features", - "indexmap", - "log", - "naga", - "once_cell", - "parking_lot", - "profiling", - "raw-window-handle", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 2.0.12", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-hal" -version = "24.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" -dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bitflags 2.9.1", - "bytemuck", - "cfg_aliases", - "core-graphics-types", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-descriptor", - "js-sys", - "khronos-egl", - "libc", - "libloading", - "log", - "metal", - "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", - "once_cell", - "ordered-float", - "parking_lot", - "profiling", - "raw-window-handle", - "renderdoc-sys", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 2.0.12", - "wasm-bindgen", - "web-sys", - "wgpu-types", - "windows", -] - -[[package]] -name = "wgpu-types" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" -dependencies = [ - "bitflags 2.9.1", - "js-sys", - "log", - "web-sys", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - -[[package]] -name = "winit" -version = "0.30.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" -dependencies = [ - "ahash", - "android-activity", - "atomic-waker", - "bitflags 2.9.1", - "block2", - "bytemuck", - "calloop", - "cfg_aliases", - "concurrent-queue", - "core-foundation 0.9.4", - "core-graphics", - "cursor-icon", - "dpi", - "js-sys", - "libc", - "memmap2", - "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", - "orbclient", - "percent-encoding", - "pin-project", - "raw-window-handle", - "redox_syscall 0.4.1", - "rustix 0.38.44", - "sctk-adwaita", - "smithay-client-toolkit", - "smol_str", - "tracing", - "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-plasma", - "web-sys", - "web-time", - "windows-sys 0.52.0", - "x11-dl", - "x11rb", - "xkbcommon-dl", -] - -[[package]] -name = "winnow" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "x11rb" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", - "rustix 0.38.44", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" - -[[package]] -name = "xcursor" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" - -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "xkbcommon-dl" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" -dependencies = [ - "bitflags 2.9.1", - "dlib", - "log", - "once_cell", - "xkeysym", -] - -[[package]] -name = "xkeysym" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" - -[[package]] -name = "xml-rs" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zbus" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus-lockstep" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" -dependencies = [ - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus-lockstep-macros" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "zbus-lockstep", - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - -[[package]] -name = "zbus_xml" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" -dependencies = [ - "quick-xml 0.30.0", - "serde", - "static_assertions", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zerocopy" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zvariant" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] From a2b80ba919175b23513ae2c965564bce6b9fa378 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 23 Dec 2025 01:40:22 +0100 Subject: [PATCH 11/48] Apply format --- src/bitbots_rust_test/CMakeLists.txt | 30 ++++++++++------------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/bitbots_rust_test/CMakeLists.txt b/src/bitbots_rust_test/CMakeLists.txt index c811b5025f..99a2d65efc 100644 --- a/src/bitbots_rust_test/CMakeLists.txt +++ b/src/bitbots_rust_test/CMakeLists.txt @@ -4,17 +4,14 @@ project(bitbots_rust_test) find_package(ament_cmake REQUIRED) find_package(bitbots_cargo REQUIRED) -if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS) - set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings") -endif() - # put ros package dependencies here. -r2r_cargo(std_msgs # just to test that it works - rcl # we need the c ros2 api - rcl_action # as of r2r 0.1.0, we also need the action api - rosgraph_msgs # for the Clock message - bitbots_msgs # our custom message types - ) +r2r_cargo( + std_msgs # just to test that it works + rcl # we need the c ros2 api + rcl_action # as of r2r 0.1.0, we also need the action api + rosgraph_msgs # for the Clock message + bitbots_msgs # our custom message types +) # install binaries if(WIN32) @@ -27,20 +24,15 @@ execute_process( COMMAND cargo metadata --no-deps --format-version=1 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE CARGO_METADATA_JSON - OUTPUT_STRIP_TRAILING_WHITESPACE -) + OUTPUT_STRIP_TRAILING_WHITESPACE) # Extract "target_directory" from JSON -string(JSON CARGO_TARGET_DIR - GET "${CARGO_METADATA_JSON}" target_directory -) +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") -install(PROGRAMS - ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} - DESTINATION lib/${PROJECT_NAME} -) +install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} + DESTINATION lib/${PROJECT_NAME}) # we need this for ros/colcon ament_package() From 6acb1c81e5e5fbcd9806e9415a0d2dd8700c27a1 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 02:47:37 +0100 Subject: [PATCH 12/48] Use rust for extrinsic calibration stuff --- Cargo.lock | 16 ++++ Cargo.toml | 1 + .../CMakeLists.txt | 66 ++++++------- .../bitbots_extrinsic_calibration/Cargo.toml | 11 +++ .../launch/calibration.launch | 4 +- .../bitbots_extrinsic_calibration/package.xml | 12 +-- .../src/extrinsic_calibration.cpp | 84 ---------------- .../bitbots_extrinsic_calibration/src/main.rs | 96 +++++++++++++++++++ 8 files changed, 160 insertions(+), 130 deletions(-) create mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml delete mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp create mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index ff4b69e8cb..16a3dab52a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -476,6 +476,16 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +dependencies = [ + "futures", + "glam", + "r2r", + "tokio", +] + [[package]] name = "bitbots_rust_nav" version = "0.1.2" @@ -1463,6 +1473,12 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "glam" +version = "0.30.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46" + [[package]] name = "glob" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index 6a4e98d5e7..0a959f3218 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "src/bitbots_misc/bitbots_extrinsic_calibration", "src/bitbots_rust_test", "src/bitbots_navigation/bitbots_rust_nav" ] diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt index f7c77480fa..679f706e66 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt @@ -1,48 +1,38 @@ cmake_minimum_required(VERSION 3.5) project(bitbots_extrinsic_calibration) -# Add support for C++17 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() - -# Build with release optimizations and debug symbols by default -if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebug) -endif() - find_package(ament_cmake REQUIRED) -find_package(backward_ros REQUIRED) -find_package(bitbots_docs REQUIRED) -find_package(geometry_msgs REQUIRED) -find_package(rclcpp REQUIRED) -find_package(rot_conv REQUIRED) -find_package(std_msgs REQUIRED) -find_package(tf2 REQUIRED) -find_package(tf2_geometry_msgs REQUIRED) -find_package(tf2_ros REQUIRED) - -add_compile_options(-Wall -Werror -Wno-unused) - -add_executable(extrinsic_calibration src/extrinsic_calibration.cpp) - -ament_target_dependencies( - extrinsic_calibration - ament_cmake - bitbots_docs - rclcpp - std_msgs - tf2 - tf2_geometry_msgs - tf2_ros - rot_conv) +find_package(bitbots_cargo REQUIRED) + +# put ros package dependencies here. +r2r_cargo( + rcl # we need the c ros2 api + rcl_action # as of r2r 0.1.0, we also need the action api + rosgraph_msgs # for the Clock message + geometry_msgs + tf2_msgs +) + +# install binaries +if(WIN32) + set(SUFFIX ".exe") +else() + set(SUFFIX "") +endif() -enable_bitbots_docs() +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) -install(TARGETS extrinsic_calibration DESTINATION lib/${PROJECT_NAME}) +# Extract "target_directory" from JSON +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) -install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) +message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") -install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} + DESTINATION lib/${PROJECT_NAME}) +# we need this for ros/colcon ament_package() diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml new file mode 100644 index 0000000000..1f9b6111de --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +authors = ["Florian Vahl "] +edition = "2021" + +[dependencies] +r2r = "0.9" +futures = "0.3.15" +tokio = { version = "1", features = ["full"] } +glam = "0.30.9" diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch index ba6980f48f..979cc9b674 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch @@ -1,13 +1,13 @@ - + - + diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml index 07c8168262..98d3f9c6b0 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml @@ -14,12 +14,12 @@ ament_cmake - backward_ros - bitbots_docs - rot_conv - std_msgs - tf2_ros - tf2 + rcl + bitbots_cargo + geometry_msgs + rosgraph_msgs + + rcl diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp b/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp deleted file mode 100644 index a20f5ac356..0000000000 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include -using std::placeholders::_1; - -class ExtrinsicCalibrationBroadcaster : public rclcpp::Node { - public: - ExtrinsicCalibrationBroadcaster() : Node("bitbots_extrinsic_calibration") { - broadcaster_ = std::make_unique(this); - - this->declare_parameter("parent_frame", "camera_optical_frame_uncalibrated"); - this->declare_parameter("child_frame", "zed_left_camera_optical_frame"); - this->declare_parameter("offset_x", 0.0); - this->declare_parameter("offset_y", 0.0); - this->declare_parameter("offset_z", 0.0); - - auto parameters = this->get_parameters(this->list_parameters({}, 10).names); - onSetParameters(parameters); - - param_callback_handle_ = - this->add_on_set_parameters_callback(std::bind(&ExtrinsicCalibrationBroadcaster::onSetParameters, this, _1)); - } - - rcl_interfaces::msg::SetParametersResult onSetParameters(const std::vector& parameters) { - for (const auto& parameter : parameters) { - if (parameter.get_name() == "offset_x") { - offset_x_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_y") { - offset_y_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_z") { - offset_z_ = parameter.as_double(); - } else if (parameter.get_name() == "parent_frame") { - parent_frame_ = parameter.as_string(); - } else if (parameter.get_name() == "child_frame") { - child_frame_ = parameter.as_string(); - } else { - RCLCPP_DEBUG(this->get_logger(), "Unknown parameter: %s", parameter.get_name().c_str()); - } - } - auto offset_quat = rot_conv::QuatFromEuler(offset_z_, offset_y_, offset_x_); - - transform_.rotation.x = offset_quat.x(); - transform_.rotation.y = offset_quat.y(); - transform_.rotation.z = offset_quat.z(); - transform_.rotation.w = offset_quat.w(); - - geometry_msgs::msg::TransformStamped tf; - tf.header.stamp = this->now(); - tf.header.frame_id = parent_frame_; - tf.child_frame_id = child_frame_; - tf.transform = transform_; - broadcaster_->sendTransform(tf); - - rcl_interfaces::msg::SetParametersResult result; - result.successful = true; - - return result; - } - - private: - OnSetParametersCallbackHandle::SharedPtr param_callback_handle_; - std::unique_ptr broadcaster_; - geometry_msgs::msg::Transform transform_{geometry_msgs::msg::Transform()}; - std::string parent_frame_, child_frame_; - double offset_x_ = 0, offset_y_ = 0, offset_z_ = 0; -}; - -int main(int argc, char** argv) { - rclcpp::init(argc, argv); - - auto node = std::make_shared(); - - rclcpp::experimental::executors::EventsExecutor exec; - exec.add_node(node); - exec.spin(); - rclcpp::shutdown(); -} diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs new file mode 100644 index 0000000000..9bfd956073 --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -0,0 +1,96 @@ +use futures::prelude::*; +use glam::{EulerRot, Quat}; +use r2r::{ + geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, + std_msgs::msg::Header, + tf2_msgs::msg::TFMessage, + RosParams, +}; +use std::sync::{Arc, Mutex as StdMutex}; + +#[derive(RosParams, Debug, Clone)] +struct CalibrationParams { + /// Parent frame for the calibration transform + parent_frame: String, + /// Child frame for the calibration transform + child_frame: String, + /// Roll offset in radians + offset_x: f32, + /// Pitch offset in radians + offset_y: f32, + /// Yaw offset in radians + offset_z: f32, +} + +impl Default for CalibrationParams { + fn default() -> Self { + Self { + parent_frame: "camera_optical_frame_uncalibrated".to_string(), + child_frame: "camera_optical_frame".to_string(), + offset_x: 0., + offset_y: 0., + offset_z: 0., + } + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let ctx = r2r::Context::create()?; + let mut node = r2r::Node::create(ctx, "bitbots_extrinsic_calibration", "")?; + let nl = node.logger().to_string(); + + // Initialize parameter handling + let params = Arc::new(StdMutex::new(CalibrationParams::default())); + let (parameter_handler, mut parameter_events) = + node.make_derived_parameter_handler(params.clone())?; + tokio::task::spawn(parameter_handler); + + let tf_static_broadcaster = node.create_publisher("/tf_static", r2r::QosProfile::default())?; + let ros_clock = node.get_ros_clock(); + + tokio::task::spawn(async move { + loop { + parameter_events.next().await; + let params = params.lock().unwrap(); + + r2r::log_info!(&nl, "New parameters: {:#?}", params); + + tf_static_broadcaster + .publish(&TFMessage { + transforms: vec![TransformStamped { + header: Header { + frame_id: params.parent_frame.clone(), + stamp: r2r::Clock::to_builtin_time( + &ros_clock.lock().unwrap().get_now().unwrap(), + ), + }, + child_frame_id: params.child_frame.clone(), + transform: Transform { + translation: Vector3::default(), + rotation: { + let quat = Quat::from_euler( + EulerRot::ZYX, + params.offset_z, + params.offset_y, + params.offset_x, + ); + Quaternion { + x: quat.x as f64, + y: quat.y as f64, + z: quat.z as f64, + w: quat.w as f64, + } + }, + }, + }], + }) + .expect("Failed to publish updated transform"); + } + }); + + // Spin the node + loop { + node.spin_once(std::time::Duration::from_millis(100)); + } +} From 03a7e5ed5fed8ef2d5f24e5d7d4a3d842115a48c Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 02:50:09 +0100 Subject: [PATCH 13/48] Fix formatting --- src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs index 9bfd956073..125ce8c07f 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -4,6 +4,7 @@ use r2r::{ geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, std_msgs::msg::Header, tf2_msgs::msg::TFMessage, + Clock, RosParams, }; use std::sync::{Arc, Mutex as StdMutex}; @@ -61,9 +62,7 @@ async fn main() -> Result<(), Box> { transforms: vec![TransformStamped { header: Header { frame_id: params.parent_frame.clone(), - stamp: r2r::Clock::to_builtin_time( - &ros_clock.lock().unwrap().get_now().unwrap(), - ), + stamp: Clock::to_builtin_time(&ros_clock.lock().unwrap().get_now().unwrap()), }, child_frame_id: params.child_frame.clone(), transform: Transform { From edc94142ab4c2cf894826a4835d783381b4e53e6 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 02:56:42 +0100 Subject: [PATCH 14/48] Add cargo pre-commit hook --- .pre-commit-config.yaml | 7 +++++++ .../bitbots_extrinsic_calibration/CMakeLists.txt | 3 +-- src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs | 7 ++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2185ba4512..8deb8cf02f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,3 +44,10 @@ repos: - id: check-xml - id: check-yaml - id: detect-private-key + - repo: local + hooks: + - id: cargo-fmt + name: cargo fmt + entry: cargo fmt + language: system + pass_filenames: false diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt index 679f706e66..0537d044ec 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt @@ -10,8 +10,7 @@ r2r_cargo( rcl_action # as of r2r 0.1.0, we also need the action api rosgraph_msgs # for the Clock message geometry_msgs - tf2_msgs -) + tf2_msgs) # install binaries if(WIN32) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs index 125ce8c07f..ecbd4d0389 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -4,8 +4,7 @@ use r2r::{ geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, std_msgs::msg::Header, tf2_msgs::msg::TFMessage, - Clock, - RosParams, + Clock, RosParams, }; use std::sync::{Arc, Mutex as StdMutex}; @@ -62,7 +61,9 @@ async fn main() -> Result<(), Box> { transforms: vec![TransformStamped { header: Header { frame_id: params.parent_frame.clone(), - stamp: Clock::to_builtin_time(&ros_clock.lock().unwrap().get_now().unwrap()), + stamp: Clock::to_builtin_time( + &ros_clock.lock().unwrap().get_now().unwrap(), + ), }, child_frame_id: params.child_frame.clone(), transform: Transform { From 452fc1b851e2c0ec089f140e19c0d92a3acda0b8 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 14:24:13 +0100 Subject: [PATCH 15/48] Clean stop and initial update --- .../bitbots_extrinsic_calibration/src/main.rs | 84 +++++++++++-------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs index ecbd4d0389..832b6ef786 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -46,51 +46,63 @@ async fn main() -> Result<(), Box> { node.make_derived_parameter_handler(params.clone())?; tokio::task::spawn(parameter_handler); - let tf_static_broadcaster = node.create_publisher("/tf_static", r2r::QosProfile::default())?; + let tf_static_broadcaster = + node.create_publisher("/tf_static", r2r::QosProfile::default().transient_local())?; let ros_clock = node.get_ros_clock(); tokio::task::spawn(async move { loop { - parameter_events.next().await; - let params = params.lock().unwrap(); + { + let params = params.lock().unwrap(); - r2r::log_info!(&nl, "New parameters: {:#?}", params); + r2r::log_info!(&nl, "New parameters: {:#?}", params); - tf_static_broadcaster - .publish(&TFMessage { - transforms: vec![TransformStamped { - header: Header { - frame_id: params.parent_frame.clone(), - stamp: Clock::to_builtin_time( - &ros_clock.lock().unwrap().get_now().unwrap(), - ), - }, - child_frame_id: params.child_frame.clone(), - transform: Transform { - translation: Vector3::default(), - rotation: { - let quat = Quat::from_euler( - EulerRot::ZYX, - params.offset_z, - params.offset_y, - params.offset_x, - ); - Quaternion { - x: quat.x as f64, - y: quat.y as f64, - z: quat.z as f64, - w: quat.w as f64, - } + tf_static_broadcaster + .publish(&TFMessage { + transforms: vec![TransformStamped { + header: Header { + frame_id: params.parent_frame.clone(), + stamp: Clock::to_builtin_time( + &ros_clock.lock().unwrap().get_now().unwrap(), + ), + }, + child_frame_id: params.child_frame.clone(), + transform: Transform { + translation: Vector3::default(), + rotation: { + let quat = Quat::from_euler( + EulerRot::ZYX, + params.offset_z, + params.offset_y, + params.offset_x, + ); + Quaternion { + x: quat.x as f64, + y: quat.y as f64, + z: quat.z as f64, + w: quat.w as f64, + } + }, }, - }, - }], - }) - .expect("Failed to publish updated transform"); + }], + }) + .expect("Failed to publish updated transform"); + } + // Wait for next parameter update + parameter_events.next().await; } }); // Spin the node - loop { - node.spin_once(std::time::Duration::from_millis(100)); - } + tokio::task::spawn(async move { + loop { + node.spin_once(std::time::Duration::from_millis(100)); + tokio::task::yield_now().await; // Let the other tasks run too + } + }); + + // Await shutdown signal + tokio::signal::ctrl_c().await?; + + Ok(()) } From 0ed380951cc353939d6032cbd004b30a183fbf10 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 14:31:14 +0100 Subject: [PATCH 16/48] Use default derive macro --- .../bitbots_extrinsic_calibration/src/main.rs | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs index 832b6ef786..241ed35ad9 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -8,7 +8,7 @@ use r2r::{ }; use std::sync::{Arc, Mutex as StdMutex}; -#[derive(RosParams, Debug, Clone)] +#[derive(RosParams, Debug, Default, Clone)] struct CalibrationParams { /// Parent frame for the calibration transform parent_frame: String, @@ -22,18 +22,6 @@ struct CalibrationParams { offset_z: f32, } -impl Default for CalibrationParams { - fn default() -> Self { - Self { - parent_frame: "camera_optical_frame_uncalibrated".to_string(), - child_frame: "camera_optical_frame".to_string(), - offset_x: 0., - offset_y: 0., - offset_z: 0., - } - } -} - #[tokio::main] async fn main() -> Result<(), Box> { let ctx = r2r::Context::create()?; @@ -55,8 +43,6 @@ async fn main() -> Result<(), Box> { { let params = params.lock().unwrap(); - r2r::log_info!(&nl, "New parameters: {:#?}", params); - tf_static_broadcaster .publish(&TFMessage { transforms: vec![TransformStamped { @@ -90,6 +76,7 @@ async fn main() -> Result<(), Box> { } // Wait for next parameter update parameter_events.next().await; + r2r::log_info!(&nl, "Extrinsic parameter update"); } }); From 00c6ce675dc7aac862b12249950369bf6ab41319 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Sun, 4 Jan 2026 15:13:47 +0100 Subject: [PATCH 17/48] Narrow import --- src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs index 241ed35ad9..cec6d7612a 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -1,4 +1,4 @@ -use futures::prelude::*; +use futures::StreamExt; use glam::{EulerRot, Quat}; use r2r::{ geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, From 024c925afcf53a62737ad07d08ca4ccca31b47aa Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 00:01:29 +0200 Subject: [PATCH 18/48] Integrate teamplayer TUI into cargo workspace, build via colcon - Add bitbots_misc/bitbots_bringup/tui to root cargo workspace - Build teamplayer binary via cmake add_custom_target (cargo build --package) so colcon installs it to lib/bitbots_bringup/teamplayer - Switch pixi teamplayer task from cargo run to ros2 run bitbots_bringup teamplayer - Update ratatui to 0.30 and pin crossterm to 0.28 (unifies ratatui version across workspace, fixes ansi-to-tui type conflict) - Fix deprecated Frame::size() -> Frame::area() in ui.rs - Add rust >= 1.88 to ros pixi feature (ratatui 0.30 requires 1.86+) - Remove bitbots_rust_test demo package - Remove tui/Cargo.lock (now tracked at workspace root) Co-Authored-By: Claude Sonnet 4.6 --- Cargo.lock | 2175 ++++++++++++----- Cargo.toml | 2 +- pixi.lock | 478 +++- pixi.toml | 3 +- .../bitbots_bringup/CMakeLists.txt | 24 + .../bitbots_bringup/tui/Cargo.lock | 869 ------- .../bitbots_bringup/tui/Cargo.toml | 4 +- .../bitbots_bringup/tui/src/ui.rs | 6 +- src/bitbots_rust_test/CMakeLists.txt | 38 - src/bitbots_rust_test/Cargo.toml | 10 - src/bitbots_rust_test/package.xml | 26 - src/bitbots_rust_test/src/main.rs | 101 - 12 files changed, 2054 insertions(+), 1682 deletions(-) delete mode 100644 src/bitbots_misc/bitbots_bringup/tui/Cargo.lock delete mode 100644 src/bitbots_rust_test/CMakeLists.txt delete mode 100644 src/bitbots_rust_test/Cargo.toml delete mode 100644 src/bitbots_rust_test/package.xml delete mode 100644 src/bitbots_rust_test/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 16a3dab52a..10e326a4ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,23 +146,21 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.10.0", + "bitflags 2.12.1", "cc", - "cesu8", "jni", - "jni-sys", "libc", "log", "ndk", "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -180,6 +178,73 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi-to-tui" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0e348dcd256ba06d44d5deabc88a7c0e80ee7303158253ca069bcd9e9b7f57" +dependencies = [ + "nom", + "ratatui", + "thiserror 1.0.69", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + [[package]] name = "approx" version = "0.5.1" @@ -198,7 +263,7 @@ dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", @@ -262,9 +327,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -298,7 +363,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.2", + "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] @@ -329,7 +394,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 1.1.2", + "rustix 1.1.4", ] [[package]] @@ -340,14 +405,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "async-signal" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" dependencies = [ "async-io", "async-lock", @@ -355,7 +420,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.2", + "rustix 1.1.4", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -375,7 +440,16 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "atomic" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" +dependencies = [ + "bytemuck", ] [[package]] @@ -437,9 +511,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" @@ -447,7 +527,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -456,9 +536,18 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", - "shlex", - "syn", + "rustc-hash 2.1.2", + "shlex 1.3.0", + "syn 2.0.117", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", ] [[package]] @@ -467,9 +556,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" @@ -495,16 +590,7 @@ dependencies = [ "keyed_priority_queue", "ordered-float", "pyo3", - "rand 0.9.2", -] - -[[package]] -name = "bitbots_rust_test" -version = "0.1.0" -dependencies = [ - "futures", - "r2r", - "tokio", + "rand 0.9.4", ] [[package]] @@ -515,9 +601,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" dependencies = [ "serde_core", ] @@ -561,15 +647,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -582,7 +668,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -599,9 +685,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "calloop" @@ -609,7 +695,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "log", "polling", "rustix 0.38.44", @@ -619,13 +705,13 @@ dependencies = [ [[package]] name = "calloop" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "polling", - "rustix 1.1.2", + "rustix 1.1.4", "slab", "tracing", ] @@ -648,30 +734,33 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "calloop 0.14.3", - "rustix 1.1.2", + "calloop 0.14.4", + "rustix 1.1.4", "wayland-backend", "wayland-client", ] +[[package]] +name = "castaway" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" -version = "1.2.50" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cexpr" version = "0.6.0" @@ -713,6 +802,46 @@ dependencies = [ "libloading", ] +[[package]] +name = "clap" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.10.0", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + [[package]] name = "clipboard-win" version = "5.4.1" @@ -729,9 +858,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "combine" version = "4.6.7" @@ -742,6 +877,20 @@ dependencies = [ "memchr", ] +[[package]] +name = "compact_str" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -751,6 +900,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -844,6 +1002,50 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crossterm" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +dependencies = [ + "bitflags 2.12.1", + "crossterm_winapi", + "futures-core", + "mio", + "parking_lot", + "rustix 0.38.44", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +dependencies = [ + "bitflags 2.12.1", + "crossterm_winapi", + "derive_more", + "document-features", + "mio", + "parking_lot", + "rustix 1.1.4", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + [[package]] name = "crunchy" version = "0.2.4" @@ -860,12 +1062,93 @@ dependencies = [ "typenum", ] +[[package]] +name = "csscolorparser" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" +dependencies = [ + "lab", + "phf", +] + [[package]] name = "cursor-icon" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "deltae" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + [[package]] name = "digest" version = "0.10.7" @@ -884,30 +1167,30 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ "libloading", ] @@ -997,7 +1280,7 @@ checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" dependencies = [ "accesskit", "ahash", - "bitflags 2.10.0", + "bitflags 2.12.1", "emath", "epaint", "log", @@ -1065,9 +1348,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "emath" @@ -1102,7 +1385,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1151,6 +1434,15 @@ version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", +] + [[package]] name = "event-listener" version = "5.4.1" @@ -1173,30 +1465,26 @@ dependencies = [ ] [[package]] -name = "fastrand" -version = "2.3.0" +name = "fancy-regex" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set 0.5.3", + "regex", +] [[package]] -name = "fax" -version = "0.2.6" +name = "fastrand" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" -dependencies = [ - "fax_derive", -] +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] -name = "fax_derive" -version = "0.2.0" +name = "fax" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" @@ -1207,17 +1495,40 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "filedescriptor" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" +dependencies = [ + "libc", + "thiserror 1.0.69", + "winapi", +] + [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "finl_unicode" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1229,12 +1540,24 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "force-send-sync" version = "1.2.0" @@ -1259,7 +1582,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1279,9 +1602,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -1294,9 +1617,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1304,15 +1627,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1321,9 +1644,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -1340,32 +1663,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -1375,7 +1698,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1409,9 +1731,9 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f8647af4005fa11da47cd56252c6ef030be8fa97bdbf355e7dfb6348f0a82c" +checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5" dependencies = [ "approx", "num-traits", @@ -1422,9 +1744,9 @@ dependencies = [ [[package]] name = "geographiclib-rs" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" +checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" dependencies = [ "libm", ] @@ -1435,15 +1757,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.4", "windows-link", ] [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", @@ -1458,8 +1780,21 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", "wasip2", + "wasip3", ] [[package]] @@ -1475,9 +1810,9 @@ dependencies = [ [[package]] name = "glam" -version = "0.30.9" +version = "0.30.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" [[package]] name = "glob" @@ -1503,7 +1838,7 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cfg_aliases", "cgl", "dispatch2", @@ -1511,7 +1846,7 @@ dependencies = [ "glutin_glx_sys", "glutin_wgl_sys", "libloading", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -1569,7 +1904,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "gpu-alloc-types", ] @@ -1579,7 +1914,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] @@ -1588,7 +1923,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -1599,7 +1934,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] @@ -1628,9 +1963,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -1638,6 +1971,17 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "heapless" @@ -1649,6 +1993,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1719,12 +2069,13 @@ checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1732,9 +2083,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1745,9 +2096,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1759,15 +2110,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1779,15 +2130,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1798,6 +2149,18 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "1.1.0" @@ -1811,9 +2174,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1821,9 +2184,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", @@ -1844,12 +2207,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -1861,6 +2226,25 @@ dependencies = [ "rustversion", ] +[[package]] +name = "instability" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" +dependencies = [ + "darling", + "indoc", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "itertools" version = "0.10.5" @@ -1888,33 +2272,78 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -1928,14 +2357,27 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] +[[package]] +name = "kasuari" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899" +dependencies = [ + "hashbrown 0.16.1", + "portable-atomic", + "thiserror 2.0.18", +] + [[package]] name = "keyed_priority_queue" version = "0.4.2" @@ -1962,17 +2404,29 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "lab" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" + [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.178" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -1986,19 +2440,29 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.11" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "libc", - "redox_syscall 0.6.0", + "plain", + "redox_syscall 0.8.1", +] + +[[package]] +name = "line-clipping" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" +dependencies = [ + "bitflags 2.12.1", ] [[package]] @@ -2009,15 +2473,15 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -2036,9 +2500,28 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" + +[[package]] +name = "lru" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "mac_address" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" +dependencies = [ + "nix 0.29.0", + "winapi", +] [[package]] name = "malloc_buf" @@ -2051,19 +2534,25 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] +[[package]] +name = "memmem" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15" + [[package]] name = "memoffset" version = "0.9.1" @@ -2079,7 +2568,7 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block", "core-graphics-types", "foreign-types", @@ -2106,20 +2595,21 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.61.2", ] [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -2132,8 +2622,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" dependencies = [ "arrayvec", - "bit-set", - "bitflags 2.10.0", + "bit-set 0.8.0", + "bitflags 2.12.1", "cfg_aliases", "codespan-reporting", "hexf-parse", @@ -2141,9 +2631,9 @@ dependencies = [ "log", "rustc-hash 1.1.0", "spirv", - "strum", + "strum 0.26.3", "termcolor", - "thiserror 2.0.17", + "thiserror 2.0.18", "unicode-xid", ] @@ -2153,8 +2643,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.10.0", - "jni-sys", + "bitflags 2.12.1", + "jni-sys 0.3.1", "log", "ndk-sys 0.6.0+11769913", "num_enum", @@ -2174,16 +2664,27 @@ version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", ] [[package]] -name = "ndk-sys" -version = "0.6.0+11769913" +name = "nix" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "jni-sys", + "bitflags 2.12.1", + "cfg-if", + "libc", ] [[package]] @@ -2192,7 +2693,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cfg-if", "cfg_aliases", "libc", @@ -2215,6 +2716,23 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -2227,9 +2745,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2237,14 +2755,23 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", ] [[package]] @@ -2274,9 +2801,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -2287,7 +2814,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "libc", "objc2 0.5.2", @@ -2303,8 +2830,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation 0.3.2", @@ -2316,7 +2843,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2340,7 +2867,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2352,9 +2879,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "dispatch2", - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] @@ -2363,9 +2890,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "dispatch2", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-core-foundation", "objc2-io-surface", ] @@ -2406,7 +2933,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "dispatch", "libc", @@ -2419,8 +2946,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", ] @@ -2430,8 +2957,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", ] @@ -2453,7 +2980,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2465,7 +2992,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2488,7 +3015,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-cloud-kit", @@ -2520,7 +3047,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2529,16 +3056,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "orbclient" -version = "0.3.49" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ + "libc", "libredox", ] @@ -2620,6 +3154,49 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2", +] + [[package]] name = "phf" version = "0.11.3" @@ -2630,6 +3207,16 @@ dependencies = [ "phf_shared", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + [[package]] name = "phf_generator" version = "0.11.3" @@ -2637,7 +3224,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", - "rand 0.8.5", + "rand 0.8.6", ] [[package]] @@ -2650,7 +3237,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2664,41 +3251,35 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", @@ -2707,17 +3288,23 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "crc32fast", "fdeflate", "flate2", @@ -2734,25 +3321,31 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.61.2", ] [[package]] name = "portable-atomic" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2769,41 +3362,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" [[package]] name = "pyo3" @@ -2852,7 +3442,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2861,11 +3451,11 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "pyo3-build-config", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2886,18 +3476,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.39.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -2908,6 +3498,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "r2r" version = "0.9.5" @@ -2931,7 +3527,7 @@ dependencies = [ "rayon", "serde", "serde_json", - "syn", + "syn 2.0.117", "thiserror 1.0.69", "uuid", ] @@ -2968,7 +3564,7 @@ checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2986,7 +3582,7 @@ dependencies = [ "r2r_common", "r2r_rcl", "rayon", - "syn", + "syn 2.0.117", ] [[package]] @@ -3003,9 +3599,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -3014,12 +3610,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -3039,7 +3635,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -3048,18 +3644,103 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "ratatui" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc" +dependencies = [ + "instability", + "ratatui-core", + "ratatui-crossterm", + "ratatui-macros", + "ratatui-termwiz", + "ratatui-widgets", +] + +[[package]] +name = "ratatui-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293" +dependencies = [ + "bitflags 2.12.1", + "compact_str", + "hashbrown 0.16.1", + "indoc", + "itertools 0.14.0", + "kasuari", + "lru", + "strum 0.27.2", + "thiserror 2.0.18", + "unicode-segmentation", + "unicode-truncate", + "unicode-width 0.2.2", +] + +[[package]] +name = "ratatui-crossterm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3" +dependencies = [ + "cfg-if", + "crossterm 0.29.0", + "instability", + "ratatui-core", +] + +[[package]] +name = "ratatui-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4" +dependencies = [ + "ratatui-core", + "ratatui-widgets", +] + +[[package]] +name = "ratatui-termwiz" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c" +dependencies = [ + "ratatui-core", + "termwiz", +] + +[[package]] +name = "ratatui-widgets" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db" +dependencies = [ + "bitflags 2.12.1", + "hashbrown 0.16.1", + "indoc", + "instability", + "itertools 0.14.0", + "line-clipping", + "ratatui-core", + "strum 0.27.2", + "time", + "unicode-segmentation", + "unicode-width 0.2.2", +] + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -3068,9 +3749,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -3101,23 +3782,23 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] name = "redox_syscall" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -3127,9 +3808,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -3138,9 +3819,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "renderdoc-sys" @@ -3173,9 +3854,18 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] [[package]] name = "rustix" @@ -3183,7 +3873,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3192,14 +3882,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -3211,9 +3901,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -3249,6 +3939,12 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + [[package]] name = "serde" version = "1.0.228" @@ -3276,20 +3972,20 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.146" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -3300,7 +3996,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3331,32 +4027,76 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" @@ -3379,7 +4119,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "calloop 0.13.0", "calloop-wayland-source 0.3.0", "cursor-icon", @@ -3404,15 +4144,15 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.10.0", - "calloop 0.14.3", + "bitflags 2.12.1", + "calloop 0.14.4", "calloop-wayland-source 0.4.1", "cursor-icon", "libc", "log", "memmap2", - "rustix 1.1.2", - "thiserror 2.0.17", + "rustix 1.1.4", + "thiserror 2.0.18", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3447,21 +4187,21 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "spade" -version = "2.15.0" +version = "2.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb313e1c8afee5b5647e00ee0fe6855e3d529eb863a0fdae1d60006c4d1e9990" +checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", "num-traits", "robust", "smallvec", @@ -3473,7 +4213,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", ] [[package]] @@ -3494,13 +4234,34 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -3509,18 +4270,41 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.111" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -3535,35 +4319,112 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "target-lexicon" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "teamplayer" +version = "0.1.0" +dependencies = [ + "ansi-to-tui", + "anyhow", + "clap", + "crossterm 0.28.1", + "futures", + "nix 0.27.1", + "ratatui", + "tokio", +] [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.2", "once_cell", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.61.2", ] [[package]] -name = "termcolor" -version = "1.4.1" +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminfo" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662" +dependencies = [ + "fnv", + "nom", + "phf", + "phf_codegen", +] + +[[package]] +name = "termios" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" +dependencies = [ + "libc", +] + +[[package]] +name = "termwiz" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" dependencies = [ - "winapi-util", + "anyhow", + "base64", + "bitflags 2.12.1", + "fancy-regex", + "filedescriptor", + "finl_unicode", + "fixedbitset", + "hex", + "lazy_static", + "libc", + "log", + "memmem", + "nix 0.29.0", + "num-derive", + "num-traits", + "ordered-float", + "pest", + "pest_derive", + "phf", + "sha2", + "signal-hook", + "siphasher", + "terminfo", + "termios", + "thiserror 1.0.69", + "ucd-trie", + "unicode-segmentation", + "vtparse", + "wezterm-bidi", + "wezterm-blob-leases", + "wezterm-color-types", + "wezterm-dynamic", + "wezterm-input-types", + "winapi", ] [[package]] @@ -3577,11 +4438,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -3592,25 +4453,25 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", @@ -3620,6 +4481,27 @@ dependencies = [ "zune-jpeg", ] +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + [[package]] name = "tiny-skia" version = "0.11.4" @@ -3647,9 +4529,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3657,9 +4539,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.48.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -3674,29 +4556,29 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap", "toml_datetime", @@ -3706,9 +4588,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] @@ -3733,7 +4615,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3757,37 +4639,54 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", ] [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ucd-trie" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "winapi", + "windows-sys 0.61.2", ] [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-truncate" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" +dependencies = [ + "itertools 0.14.0", + "unicode-segmentation", + "unicode-width 0.2.2", +] [[package]] name = "unicode-width" @@ -3795,6 +4694,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3809,9 +4714,9 @@ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -3825,13 +4730,20 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "uuid" -version = "1.19.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" dependencies = [ - "getrandom 0.3.4", + "atomic", + "getrandom 0.4.2", "js-sys", "serde_core", "wasm-bindgen", @@ -3843,6 +4755,15 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vtparse" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0" +dependencies = [ + "utf8parse", +] + [[package]] name = "walkdir" version = "2.5.0" @@ -3861,18 +4782,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.51.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" dependencies = [ "cfg-if", "once_cell", @@ -3883,22 +4813,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.56" +version = "0.4.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" dependencies = [ - "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3906,35 +4833,69 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.12.1", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "wayland-backend" -version = "0.3.11" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" dependencies = [ "cc", "downcast-rs", - "rustix 1.1.2", + "rustix 1.1.4", "scoped-tls", "smallvec", "wayland-sys", @@ -3942,12 +4903,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.11" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.10.0", - "rustix 1.1.2", + "bitflags 2.12.1", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] @@ -3958,29 +4919,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.11" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.4", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.9" +version = "0.32.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -3992,7 +4953,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4001,11 +4962,11 @@ dependencies = [ [[package]] name = "wayland-protocols-misc" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfe33d551eb8bffd03ff067a8b44bb963919157841a99957151299a6307d19c" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4014,11 +4975,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4027,11 +4988,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4040,20 +5001,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.7" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml 0.37.5", + "quick-xml 0.39.4", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.7" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", "log", @@ -4063,9 +5024,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.83" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" dependencies = [ "js-sys", "wasm-bindgen", @@ -4083,15 +5044,15 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.6" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" +checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" dependencies = [ "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-foundation 0.3.2", "url", "web-sys", @@ -4103,6 +5064,78 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" +[[package]] +name = "wezterm-bidi" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec" +dependencies = [ + "log", + "wezterm-dynamic", +] + +[[package]] +name = "wezterm-blob-leases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7" +dependencies = [ + "getrandom 0.3.4", + "mac_address", + "sha2", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "wezterm-color-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296" +dependencies = [ + "csscolorparser", + "deltae", + "lazy_static", + "wezterm-dynamic", +] + +[[package]] +name = "wezterm-dynamic" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac" +dependencies = [ + "log", + "ordered-float", + "strsim 0.11.1", + "thiserror 1.0.69", + "wezterm-dynamic-derive", +] + +[[package]] +name = "wezterm-dynamic-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "wezterm-input-types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e" +dependencies = [ + "bitflags 1.3.2", + "euclid", + "lazy_static", + "serde", + "wezterm-dynamic", +] + [[package]] name = "wgpu" version = "24.0.5" @@ -4110,7 +5143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" dependencies = [ "arrayvec", - "bitflags 2.10.0", + "bitflags 2.12.1", "cfg_aliases", "document-features", "js-sys", @@ -4135,8 +5168,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" dependencies = [ "arrayvec", - "bit-vec", - "bitflags 2.10.0", + "bit-vec 0.8.0", + "bitflags 2.12.1", "cfg_aliases", "document-features", "indexmap", @@ -4148,7 +5181,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "wgpu-hal", "wgpu-types", ] @@ -4162,7 +5195,7 @@ dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.10.0", + "bitflags 2.12.1", "bytemuck", "cfg_aliases", "core-graphics-types", @@ -4187,7 +5220,7 @@ dependencies = [ "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", "web-sys", "wgpu-types", @@ -4200,7 +5233,7 @@ version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "js-sys", "log", "web-sys", @@ -4274,7 +5307,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4285,7 +5318,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4313,15 +5346,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -4358,21 +5382,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -4406,12 +5415,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -4424,12 +5427,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -4442,12 +5439,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -4472,12 +5463,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -4490,12 +5475,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -4508,12 +5487,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -4526,12 +5499,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -4546,14 +5513,14 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.10.0", + "bitflags 2.12.1", "block2", "bytemuck", "calloop 0.13.0", @@ -4598,24 +5565,112 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.12.1", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "x11-dl" @@ -4639,7 +5694,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix 1.1.2", + "rustix 1.1.4", "x11rb-protocol", ] @@ -4671,7 +5726,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.12.1", "dlib", "log", "once_cell", @@ -4692,9 +5747,9 @@ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -4703,13 +5758,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -4735,9 +5790,9 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "nix", + "nix 0.29.0", "ordered-stream", - "rand 0.8.5", + "rand 0.8.6", "serde", "serde_repr", "sha1", @@ -4769,7 +5824,7 @@ checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "zbus-lockstep", "zbus_xml", "zvariant", @@ -4784,7 +5839,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "zvariant_utils", ] @@ -4814,50 +5869,50 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -4866,9 +5921,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -4877,26 +5932,32 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zune-core" -version = "0.4.12" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-jpeg" -version = "0.4.21" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ "zune-core", ] @@ -4923,7 +5984,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "zvariant_utils", ] @@ -4935,5 +5996,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] diff --git a/Cargo.toml b/Cargo.toml index 0a959f3218..5b99fa8c43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = [ "src/bitbots_misc/bitbots_extrinsic_calibration", - "src/bitbots_rust_test", + "src/bitbots_misc/bitbots_bringup/tui", "src/bitbots_navigation/bitbots_rust_nav" ] diff --git a/pixi.lock b/pixi.lock index a636e78166..008de91590 100644 --- a/pixi.lock +++ b/pixi.lock @@ -41,12 +41,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 @@ -161,6 +166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.6-default_h99862b1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.6-default_h746c552_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda @@ -276,6 +282,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda @@ -355,6 +362,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda @@ -469,6 +477,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -574,6 +584,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -988,7 +999,7 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[5fc18e15] @ src/bitbots_navigation/bitbots_rust_nav + - conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -1023,12 +1034,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 @@ -1140,6 +1156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.6-default_h2a92e99_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.6-default_h3185f35_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda @@ -1251,6 +1268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda @@ -1328,6 +1346,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312he5b0e10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda @@ -1442,6 +1461,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -1548,6 +1569,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -1962,7 +1984,7 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[2511feae] @ src/bitbots_navigation/bitbots_rust_nav + - conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -2128,12 +2150,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 @@ -2249,6 +2276,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.6-default_h99862b1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.6-default_h746c552_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda @@ -2364,6 +2392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda @@ -2443,6 +2472,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda @@ -2557,6 +2587,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -2662,6 +2694,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -3079,7 +3112,7 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[5fc18e15] @ src/bitbots_navigation/bitbots_rust_nav + - conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -3114,12 +3147,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 @@ -3232,6 +3270,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.6-default_h2a92e99_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.6-default_h3185f35_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda @@ -3343,6 +3382,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda @@ -3420,6 +3460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312he5b0e10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda @@ -3534,6 +3575,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -3640,6 +3683,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -4057,7 +4101,7 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[2511feae] @ src/bitbots_navigation/bitbots_rust_nav + - conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -4469,6 +4513,36 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 295716 timestamp: 1761202958833 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + sha256: 406ae4d989cc3bec99c4c3125476c66b1e39da0c4bbc49f7a0ddecf6a5814af9 + md5: 6cb5791382ee325b61377cc2f2f26ae9 + depends: + - __glibc >=2.17,<3.0.a0 + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_h99862b1_4 + - libgcc >=14 + - libllvm21 >=21.1.8,<21.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 829487 + timestamp: 1777010933851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda + sha256: 9c62039a5717e033dfc0ce145de44e2bc9d5123d9e02345a5e9b9015833d35ae + md5: 3ed56c087ec2b8ee528991df28519e9c + depends: + - binutils + - clang-21 21.1.8 default_h99862b1_4 + - clang_impl_linux-64 21.1.8 default_h0a60c25_4 + - libgcc-devel_linux-64 + - llvm-openmp >=21.1.8 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28693 + timestamp: 1777011007539 - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda sha256: 92087869cccace0433bcd852f9476ee56b1540e4e2a234a6befdb3d3dd595c30 md5: a088cd39b7d8d0cdb7ace83ad146381e @@ -4498,6 +4572,21 @@ packages: purls: [] size: 28677 timestamp: 1777011299688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda + sha256: 9d2c824c95e610fca649a7c20568851716c8bc5b1e53726d3bca94ce0efb6dfe + md5: 3f534da6723cb8431f12b925247831da + depends: + - binutils_impl_linux-64 + - clang-21 21.1.8 default_h99862b1_4 + - compiler-rt 21.1.8.* + - compiler-rt_linux-64 21.1.8.* + - libgcc-devel_linux-64 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28218 + timestamp: 1777010989729 - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda sha256: 1d635e8963e094d95d35148df4b46e495f93bb0750ad5069f4e0e6bbb47ac3bf md5: 83dae3dfadcfec9b37a9fbff6f7f7378 @@ -4575,6 +4664,32 @@ packages: - pkg:pypi/colcon-notification?source=hash-mapping size: 82327 timestamp: 1774664643705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + sha256: 858d6848e0b078c32e3a809d6d0e2d0ab9fc3069a567f117fd3dc71f9205e6d0 + md5: 3ac91ecdddec705b30d71680db84ac9d + depends: + - compiler-rt21 21.1.8 hb700be7_1 + - libcompiler-rt 21.1.8 hb700be7_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16177 + timestamp: 1769057142509 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda + sha256: ea3adf9924c6d52c9ba0767556e23f436b1619a99247aeda04f7d0907e9726b3 + md5: 7f1e2ba1c7d2ad3d5b57a12149c4af45 + depends: + - __glibc >=2.17,<3.0.a0 + - compiler-rt21_linux-64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 114459 + timestamp: 1769057141242 - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda sha256: 5709f2cbfeb8690317ba702611bdf711a502b417fecda6ad3313e501f6f8bd61 md5: fdcf2e31dd960ef7c5daa9f2c95eff0e @@ -6279,6 +6394,20 @@ packages: purls: [] size: 12828360 timestamp: 1779397396725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda + sha256: 6f76c19dd29c2d2916e919d01e929717a7c88145523c6dffe8619f3c8bb2f9eb + md5: 3b4d8d38ce35c48ad0d6415ef286541e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 10606333 + timestamp: 1769057116625 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -7830,6 +7959,18 @@ packages: purls: [] size: 63629 timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda + sha256: 41941a6edc8358ec41617252cfec6b9e560cdfdf6d5a5c7d3c2562f43a3b66cb + md5: 362702bd1f3c1b06ba5908ff18ef6d8c + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 22.1.7|22.1.7.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 6119827 + timestamp: 1780455599472 - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 sha256: 31f9bf8dfa2a6f1eb1c47e48e57b7a2b0ef25d0df18741cc3e4abd0fe076bb1d md5: 6d6c59898d7a764ff90bb1147e234056 @@ -9216,6 +9357,21 @@ packages: license_family: MIT size: 182907915 timestamp: 1777536012536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda + sha256: d084a53a1ce2cea8d6f9cf45108e516a629118dd3f8fb3113d87d1dcd3eea669 + md5: 5b80270d422d9fddf028cb4ce68370b2 + depends: + - __glibc >=2.17,<3.0.a0 + - gcc_impl_linux-64 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + - rust-std-x86_64-unknown-linux-gnu 1.96.0 h2c6d0dc_0 + - sysroot_linux-64 >=2.17 + license: MIT + license_family: MIT + purls: [] + size: 171986391 + timestamp: 1780046427552 - conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.95.0-hb4ea61c_1.conda sha256: 2a26be1c1814352e37daff075b166589bbe7a087a9bffa83212c2016a81f2aa3 md5: 89800d6dac8bff3abbe804cdd5fb6bed @@ -10686,6 +10842,35 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 315113 timestamp: 1761203960926 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + sha256: c95c3997b68ddada376d068e5e79ef1d290b331cfe0e3d197148fdc77401e057 + md5: d6465722f92006b1d5e0f1bc6c4fabd1 + depends: + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_he95a3c9_4 + - libgcc >=14 + - libllvm21 >=21.1.8,<21.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 833689 + timestamp: 1777011760822 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda + sha256: bb9c309bd0547237b2b8b1894234873a79e6ae2e871f37597b760cf9a8298606 + md5: 0043dfe9061ae4b7abf76006f5b718b0 + depends: + - binutils + - clang-21 21.1.8 default_he95a3c9_4 + - clang_impl_linux-aarch64 21.1.8 default_h1168dbd_4 + - libgcc-devel_linux-aarch64 + - llvm-openmp >=21.1.8 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28670 + timestamp: 1777011839372 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda sha256: 91f8d60dddf73c116c98765fc577b1da0b6c00ea02ded5e69858f0bd5571e96d md5: c80a4bcad92f178e0799ac5a38c4bd93 @@ -10713,6 +10898,21 @@ packages: purls: [] size: 28754 timestamp: 1777012040719 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda + sha256: 6b48ee394cf0c7534d5d016234a630f566aff71ebc7a83b1e228c81fc74cdfd4 + md5: aff9265bb6a9b18607a3af5d4a2475a0 + depends: + - binutils_impl_linux-aarch64 + - clang-21 21.1.8 default_he95a3c9_4 + - compiler-rt 21.1.8.* + - compiler-rt_linux-aarch64 21.1.8.* + - libgcc-devel_linux-aarch64 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28102 + timestamp: 1777011828305 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda sha256: a52d45824f7358e7d4abee36abcf9ae298523e8548e98899b5a317dd7cb2a685 md5: 4728e6e898f6af8dc024db1f66a2a50f @@ -10791,6 +10991,31 @@ packages: - pkg:pypi/colcon-notification?source=hash-mapping size: 86300 timestamp: 1774664660377 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + sha256: 253ad41782ffc1233708562244c388e98ec308001df1e7f26ac683e40ae327ef + md5: 43127a9573ab35af9cdec80696c8fb82 + depends: + - compiler-rt21 21.1.8 hfefdfc9_1 + - libcompiler-rt 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16241 + timestamp: 1769057250596 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda + sha256: 1fad0358b97eaf52cb58fe217179ce79d0c1b18f5e134e9fc64916a3b889da5f + md5: 76138625931230d58183cf517abf8e15 + depends: + - compiler-rt21_linux-aarch64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 114447 + timestamp: 1769057249190 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda sha256: 7713d1af8c67d3052e2fb0a9d12cb6098210342995e5db4fd70fc9aae0630465 md5: 10cfd53906b539dc866c79f5837ab577 @@ -12384,6 +12609,19 @@ packages: purls: [] size: 12619721 timestamp: 1779395526946 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda + sha256: 41b51d21aed9ceedb050a4b37b29e57a2932c8f6ff94bc4eac6674ccfd5113df + md5: 3c9ee7875d7831caf58359139753b4ac + depends: + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 7800653 + timestamp: 1769057231305 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda sha256: 41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5 md5: 67828c963b17db7dc989fe5d509ef04a @@ -13798,6 +14036,16 @@ packages: purls: [] size: 69833 timestamp: 1774072605429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda + sha256: 735e015fa7e3e1b218ab05f17e590cfe2a58228db45d1e5e6dddbaa94f57003b + md5: 47caf591958c074aa303667702de9e30 + constrains: + - openmp 22.1.7|22.1.7.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 5904649 + timestamp: 1780455572101 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 sha256: af98d46a313c5af26cb88923bf44bdd3b25eb24ae93f125633e6cffcc7f4a03b md5: 71a86b259b778dbad7f32c1b0edc3e67 @@ -15112,6 +15360,20 @@ packages: license_family: MIT size: 142750014 timestamp: 1777536507521 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda + sha256: 88f399576f66bc612473248413cbac5624eb00ad1a52831662ce1fc0a38916f8 + md5: 489afc4ab72277b53368d9cbebb9af4d + depends: + - gcc_impl_linux-aarch64 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + - rust-std-aarch64-unknown-linux-gnu 1.96.0 hbe8e118_0 + - sysroot_linux-aarch64 >=2.17 + license: MIT + license_family: MIT + purls: [] + size: 133391007 + timestamp: 1780047167214 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.95.0-hd7b9871_1.conda sha256: 15aba52722a27ce851e7618b1d8ea70f52df65f1e9cfae0dede7422e2d19b8ec md5: 7eaa25b515bfa78d8f63062dd47a1a33 @@ -16620,6 +16882,50 @@ packages: - pkg:pypi/coloredlogs?source=hash-mapping size: 43758 timestamp: 1733928076798 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + sha256: 65b0721f97be14265c8329ecb4e78a7e1233d0229878ffca5d15b98d90ba3977 + md5: 54bd44d384ce8d5ab5628a8950392b5a + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 48977047 + timestamp: 1769057035337 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + sha256: 2723ebfff00f4716f37de1bdf109f9cf016238e64f68e08c4c2c23a0aa16d24a + md5: 809e81831a385c920972cbd737af56aa + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 33322768 + timestamp: 1769057129616 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda + sha256: ba879743bae391ca774716a8db60c7b36c8c14fdc6f83535602ce303c27b985d + md5: 12fe6c056aec14f14ee8b5d38b8247f0 + depends: + - compiler-rt21_linux-64 21.1.8 hffcefe0_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16197 + timestamp: 1769057142076 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda + sha256: cb5cb5b360a854cb0b166ee956a696bef049e8aeead5af4305795d66d74ddf13 + md5: 20acd345035acaf4dc6df43c2e02ad32 + depends: + - compiler-rt21_linux-aarch64 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16273 + timestamp: 1769057250175 - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda sha256: 096940199e2145bd8bd9834ad8ab0f56f721da6fc749e8b13d04d8a69adad208 md5: 58e88566bfbbf9d3ffbeda3290e7f4f0 @@ -17994,6 +18300,18 @@ packages: license_family: MIT size: 34966255 timestamp: 1777536074306 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda + sha256: 8e86745ce1655e126d52b6a1908e4cd8721dc031fc944dbc5ba12838f6f945a5 + md5: c6a198001bc91ef594731364d10dbce3 + depends: + - __unix + constrains: + - rust >=1.96.0,<1.96.1.0a0 + license: MIT + license_family: MIT + purls: [] + size: 35596879 + timestamp: 1780046657529 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda sha256: 21925ee23f5a7522a191a67f640a765ff67c4f028db95d6f41634e22449cd4af md5: 2a3345e21b15b8659310e01e9c6eda60 @@ -18016,6 +18334,18 @@ packages: license_family: MIT size: 36416714 timestamp: 1777535938349 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda + sha256: e8c453fc331eedd6b7a02356d177802a2c03b0bc6490d86c0e63c15ef172d53f + md5: cbbc8546ba8381cb792744564cec0430 + depends: + - __unix + constrains: + - rust >=1.96.0,<1.96.1.0a0 + license: MIT + license_family: MIT + purls: [] + size: 36676677 + timestamp: 1780046295074 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda sha256: dc5a777597e05ceddefc87d2f96389b7ae0afb097e558307af83a453db3e3887 md5: 4fe12573bf499ff85a0a364e00cc5c53 @@ -34660,76 +34990,7 @@ packages: license: LicenseRef-openrail size: 244991335 timestamp: 1771976595791 -- conda_source: bitbots_rust_nav[2511feae] @ src/bitbots_navigation/bitbots_rust_nav - variants: - target_platform: linux-aarch64 - depends: - - python >=3.12 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_25.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.95.0-h6cf38e9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.95.0-hd7b9871_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.95.0-hbe8e118_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.13.3-py310he8189be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.16-hda62842_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda -- conda_source: bitbots_rust_nav[5fc18e15] @ src/bitbots_navigation/bitbots_rust_nav +- conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav variants: target_platform: linux-64 depends: @@ -34798,6 +35059,75 @@ packages: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda +- conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav + variants: + target_platform: linux-aarch64 + depends: + - python >=3.12 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + - __glibc >=2.17 + build_packages: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_25.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.95.0-h6cf38e9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.95.0-hd7b9871_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.95.0-hbe8e118_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + host_packages: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.13.3-py310he8189be_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.16-hda62842_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl name: beautifulsoup4 version: 4.14.3 diff --git a/pixi.toml b/pixi.toml index 1bb91a909e..82545800b4 100644 --- a/pixi.toml +++ b/pixi.toml @@ -14,7 +14,7 @@ version = "0.1.0" zenoh = "ros2 run rmw_zenoh_cpp rmw_zenohd" deploy = {cmd = "scripts/deploy_robots.py", description = "Deploys the current environment."} format = {cmd = "pre-commit run --all-files", description = "Runs code formatting and linting."} -teamplayer = { cmd = "cargo run --release --manifest-path src/bitbots_misc/bitbots_bringup/tui/Cargo.toml --", description = "Launch the main software components" } +teamplayer = { cmd = "ros2 run bitbots_bringup teamplayer", description = "Launch the main software components" } [tasks.build] # Skipping ZED-camera related packages as they require a local installation of the ZED SDK. @@ -46,6 +46,7 @@ readline = ">=8.2.999" # This is needed because we want to install an empty rea # Misc dependencies for our ROS 2 packages alsa-plugins = ">=1.2.12,<2" clang = ">=21.1.0,<22" # Needed for r2r rust bindings generation +rust = ">=1.88" beartype = ">=0.22.6,<0.23" breathe = ">=4.36.0,<5" cbor2 = ">=5.9.0,<6" diff --git a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt index 190fc0c30f..716cab65d8 100644 --- a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt @@ -10,4 +10,28 @@ enable_bitbots_docs() install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +if(WIN32) + set(SUFFIX ".exe") +else() + set(SUFFIX "") +endif() + +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) + +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) + +add_custom_target(cargo_teamplayer ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "cargo" "build" "--profile" "colcon" "--package" "teamplayer" "--quiet" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM +) + +install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/teamplayer${SUFFIX} + DESTINATION lib/${PROJECT_NAME}) + ament_package() diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock b/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock deleted file mode 100644 index f76f29d3f1..0000000000 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.lock +++ /dev/null @@ -1,869 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "ansi-to-tui" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e348dcd256ba06d44d5deabc88a7c0e80ee7303158253ca069bcd9e9b7f57" -dependencies = [ - "nom", - "ratatui", - "thiserror", -] - -[[package]] -name = "anstream" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "bitflags" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "cassowary" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" - -[[package]] -name = "castaway" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" -dependencies = [ - "rustversion", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "clap" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "compact_str" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" -dependencies = [ - "castaway", - "cfg-if", - "itoa", - "ryu", - "static_assertions", -] - -[[package]] -name = "crossterm" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" -dependencies = [ - "bitflags", - "crossterm_winapi", - "futures-core", - "libc", - "mio 0.8.11", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" -dependencies = [ - "winapi", -] - -[[package]] -name = "either" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "futures" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-executor" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "libc" -version = "0.2.186" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown", -] - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "mio" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "nix" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" -dependencies = [ - "bitflags", - "cfg-if", - "libc", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "ratatui" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" -dependencies = [ - "bitflags", - "cassowary", - "compact_str", - "crossterm", - "itertools 0.12.1", - "lru", - "paste", - "stability", - "strum", - "unicode-segmentation", - "unicode-truncate", - "unicode-width", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" -dependencies = [ - "libc", - "mio 0.8.11", - "signal-hook", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "stability" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "teamplayer" -version = "0.1.0" -dependencies = [ - "ansi-to-tui", - "anyhow", - "clap", - "crossterm", - "futures", - "nix", - "ratatui", - "tokio", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio" -version = "1.52.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" -dependencies = [ - "bytes", - "libc", - "mio 1.2.0", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-segmentation" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" - -[[package]] -name = "unicode-truncate" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" -dependencies = [ - "itertools 0.13.0", - "unicode-segmentation", - "unicode-width", -] - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml index d9754baf52..7bf7465f91 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml @@ -8,8 +8,8 @@ name = "teamplayer" path = "src/main.rs" [dependencies] -ratatui = "0.26" -crossterm = { version = "0.27", features = ["event-stream"] } +ratatui = "0.30" +crossterm = { version = "0.28", features = ["event-stream"] } tokio = { version = "1", features = ["full"] } anyhow = "1" futures = "0.3" diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index 2b5e6c1aff..422d888bba 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -52,7 +52,7 @@ pub fn draw(f: &mut Frame, app: &App) { // ─── Config screen ──────────────────────────────────────────────────────────── pub fn draw_config(f: &mut Frame, app: &App) { - let area = f.size(); + let area = f.area(); let banner_lines = BANNER.lines().count() as u16; let chunks = Layout::default() @@ -257,7 +257,7 @@ fn draw_start_button(f: &mut Frame, app: &App, area: Rect) { // ─── Runtime screen ─────────────────────────────────────────────────────────── pub fn draw_runtime(f: &mut Frame, app: &App) { - let area = f.size(); + let area = f.area(); let chunks = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) @@ -456,7 +456,7 @@ fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { // ─── Logs screen ────────────────────────────────────────────────────────────── pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { - let area = f.size(); + let area = f.area(); let comp = &app.components[comp_idx]; let name = COMPONENT_DEFS[comp_idx].name; diff --git a/src/bitbots_rust_test/CMakeLists.txt b/src/bitbots_rust_test/CMakeLists.txt deleted file mode 100644 index 99a2d65efc..0000000000 --- a/src/bitbots_rust_test/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -cmake_minimum_required(VERSION 3.5) -project(bitbots_rust_test) - -find_package(ament_cmake REQUIRED) -find_package(bitbots_cargo REQUIRED) - -# put ros package dependencies here. -r2r_cargo( - std_msgs # just to test that it works - rcl # we need the c ros2 api - rcl_action # as of r2r 0.1.0, we also need the action api - rosgraph_msgs # for the Clock message - bitbots_msgs # our custom message types -) - -# install binaries -if(WIN32) - set(SUFFIX ".exe") -else() - set(SUFFIX "") -endif() - -execute_process( - COMMAND cargo metadata --no-deps --format-version=1 - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE CARGO_METADATA_JSON - OUTPUT_STRIP_TRAILING_WHITESPACE) - -# Extract "target_directory" from JSON -string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) - -message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") - -install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} - DESTINATION lib/${PROJECT_NAME}) - -# we need this for ros/colcon -ament_package() diff --git a/src/bitbots_rust_test/Cargo.toml b/src/bitbots_rust_test/Cargo.toml deleted file mode 100644 index 53dbbd64f5..0000000000 --- a/src/bitbots_rust_test/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "bitbots_rust_test" -version = "0.1.0" -authors = ["Florian Vahl "] -edition = "2021" - -[dependencies] -r2r = "0.9" -futures = "0.3.15" -tokio = { version = "1", features = ["full"] } diff --git a/src/bitbots_rust_test/package.xml b/src/bitbots_rust_test/package.xml deleted file mode 100644 index 18aa042f17..0000000000 --- a/src/bitbots_rust_test/package.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - bitbots_rust_test - 0.0.1 - Examples of a minimal r2r node - Florian Vahl - MIT - Florian Vahl - - ament_cmake - - rcl - std_msgs - bitbots_msgs - - rcl - std_msgs - bitbots_msgs - rosgraph_msgs - bitbots_cargo - - - ament_cmake - - diff --git a/src/bitbots_rust_test/src/main.rs b/src/bitbots_rust_test/src/main.rs deleted file mode 100644 index 4a4c99b36b..0000000000 --- a/src/bitbots_rust_test/src/main.rs +++ /dev/null @@ -1,101 +0,0 @@ -use std::sync::{Arc, Mutex as StdMutex}; -use tokio::sync::Mutex; - -use futures::StreamExt; -use r2r::bitbots_msgs::msg::Workload; -use r2r::bitbots_msgs::srv::Leds; -use r2r::std_msgs::msg::Empty; -use r2r::RosParams; - -#[derive(RosParams, Default, Debug)] -struct Params { - /// Parameter description (Yes this comment will appear in the parameter description) - par1: f64, - /// Dummy parameter [m/s] - par2: i32, - nested: NestedParams, -} - -#[derive(RosParams, Default, Debug)] -struct NestedParams { - par3: String, - par4: u16, -} - -#[tokio::main] -async fn main() -> Result<(), Box> { - let ctx = r2r::Context::create()?; - - // Create a node - let mut node = r2r::Node::create(ctx, "test_node", "")?; - - // Get a logger name for easier logging - let nl = node.logger().to_string(); - - // Create subscribers, publishers, services, timers, etc. - let mut sub = node - .subscribe::("/hello_world", r2r::QosProfile::default())? - .fuse(); - let mut timer = node.create_timer(std::time::Duration::from_secs_f32(0.05))?; - let mut timer1 = node.create_timer(std::time::Duration::from_secs_f32(0.1))?; - let publ = node.create_publisher::("/out", r2r::QosProfile::default())?; - let mut srv = node - .create_service::("/led", r2r::QosProfile::default())? - .fuse(); - - // Parameter handling - let params = Arc::new(StdMutex::new(Params::default())); - let (paramater_handler, _) = node.make_derived_parameter_handler(params.clone())?; - tokio::task::spawn(paramater_handler); - - println!( - "Sim time is set to: {}", - node.get_parameter::("use_sim_time").unwrap() - ); - - // Share the node between tasks / threads - let node = Arc::new(Mutex::new(node)); - let spin_node = node.clone(); - - tokio::task::spawn(async move { - // Define a thread-local state - let mut state = Workload::default(); - - // Handle events - loop { - tokio::select! { - req = srv.next() => { - let req = req.unwrap(); - r2r::log_info!(&nl, "leds: {:?}", req.message); - // Flush the stdout buffer to ensure the print appears in the logs - let resp = Leds::Response::default(); - req.respond(resp).unwrap(); - }, - msg = sub.next() => { - r2r::log_info!(&nl, "message: {:?}", msg); - // Flush the stdout buffer to ensure the print appears in the logs - state.memory_used += 1; - }, - _ = timer.tick() => { - publ.publish(&Empty {}).inspect_err(|e| { - r2r::log_error!(&nl, "Error publishing message: {}", e); - }).ok(); - r2r::log_info!(&nl, "timer tick {}", state.memory_used); - }, - _ = timer1.tick() => { - let my_param = node.lock().await.get_parameter::("par1").unwrap(); - r2r::log_info!(&nl, "Parameter par1: {}", my_param); - r2r::log_info!(&nl, "timer1 tick {}", state.memory_used); - }, - } - } - }); - - // Spin the underlying rcl node object - loop { - spin_node - .lock() - .await - .spin_once(std::time::Duration::from_millis(100)); - } -} From a3584a147dd60dbb7a3023d570f4ae03d7900708 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 08:19:03 +0200 Subject: [PATCH 19/48] Migrate bitbots_rust_nav from pixi-build to ament_cmake/colcon Replaces pixi-build-python+maturin with a cmake package that builds the pyo3 extension via cargo and installs it to lib/pythonX.Y/site-packages/ in the colcon install prefix. This makes the extension discoverable via source install/setup.bash on robots without a pixi environment, matching how all other Python ROS2 packages in this workspace are installed. Co-Authored-By: Claude Sonnet 4.6 --- pixi.lock | 445 ------------------ pixi.toml | 3 - .../bitbots_rust_nav/CMakeLists.txt | 44 ++ .../bitbots_rust_nav/package.xml | 19 + 4 files changed, 63 insertions(+), 448 deletions(-) create mode 100644 src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt create mode 100644 src/bitbots_navigation/bitbots_rust_nav/package.xml diff --git a/pixi.lock b/pixi.lock index 008de91590..388f57fe47 100644 --- a/pixi.lock +++ b/pixi.lock @@ -999,7 +999,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -1984,7 +1983,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -3112,7 +3110,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -4101,7 +4098,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/18/dc99a152bea18a898a8ac387bfeb9ec0829e0f5bed11cfec2e2ca189c5a2/syrupy-5.2.0-py3-none-any.whl @@ -5259,22 +5255,6 @@ packages: purls: [] size: 77667192 timestamp: 1778268558509 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - sha256: 2c0b2870210cfc7e8561676844f4bd3884b345c19100e1da84cbfb4994d8f104 - md5: 1c2eddf7501ef92050d3fbb11df61ee3 - depends: - - binutils_impl_linux-64 >=2.45 - - libgcc >=15.2.0 - - libgcc-devel_linux-64 15.2.0 hcc6f6b0_119 - - libgomp >=15.2.0 - - libsanitizer 15.2.0 h90f66d4_19 - - libstdcxx >=15.2.0 - - libstdcxx-devel_linux-64 15.2.0 hd446a21_119 - - sysroot_linux-64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 81043749 - timestamp: 1778860073982 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_25.conda sha256: 95d22db25f0b8875febe63073f809c0c64f4026cc9e6aa0cca7130de51e4d044 md5: 0a9089d9eeeeb23313a9ce670fb89052 @@ -5287,17 +5267,6 @@ packages: purls: [] size: 29191 timestamp: 1779371710532 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_25.conda - sha256: 3fbe01ebb16418d9f1971a283f969dc0f0e1071119f24164f4293057c79dc58c - md5: 46ca2358101b2477cb098c4248795d12 - depends: - - gcc_impl_linux-64 15.2.0.* - - binutils_linux-64 - - sysroot_linux-64 - license: BSD-3-Clause - license_family: BSD - size: 29190 - timestamp: 1779371750402 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda sha256: c5594497f0646e9079705b3199dbb2d5b13c48173cf110000fa1c8818e2b3e0c md5: 7892f39a39ed39591a89a28eba03e987 @@ -7486,17 +7455,6 @@ packages: purls: [] size: 7947790 timestamp: 1778268494844 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - sha256: 7a58892a52739ce4c0f7109de9e91b4353104748eb04fc6441d88e8af444ba99 - md5: 67eef12ce33f7ff99900c212d7076fc2 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 - - libstdcxx >=15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 7930689 - timestamp: 1778269054623 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda sha256: 41a56a57a0bb78429a5ad571226dbe4cffed586446d11ad30cc4173f89c1cee8 md5: 6dc0e6dc04a710e77bfe2865dad3f3b8 @@ -8120,23 +8078,6 @@ packages: - pkg:pypi/matplotlib?source=hash-mapping size: 8336056 timestamp: 1777000573501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.13.3-py310h2b5ca13_0.conda - noarch: python - sha256: 091d0f742e4fa9bab01f9b642795a84884ee6bfc6b8aa426e97c7213fa0fda6e - md5: b1e4804b025e3acee6e93f413c551d0c - depends: - - python - - tomli >=1.1.0 - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.6,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - run_exports: {} - size: 9793377 - timestamp: 1778496710620 - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda sha256: 3e6385e04e5a8f62599a5eb72b9a8c65ac143f0621d57f24688f103276d686eb md5: 823e4ae1d60e97845773f7358585fc56 @@ -9326,37 +9267,6 @@ packages: - pkg:pypi/ruff?source=hash-mapping size: 9131490 timestamp: 1769520999080 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - sha256: fb5d544cac6a15ddbc7c47fddc812407713fd220f64716928f0ccf13c8655de4 - md5: 5a2d92eacdea9d7ffb895c3fd9c761e6 - depends: - - __glibc >=2.17,<3.0.a0 - - gcc_impl_linux-64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.91.1 h2c6d0dc_0 - - sysroot_linux-64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 232940165 - timestamp: 1762816703243 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.95.0-h53717f1_1.conda - sha256: 0f7965acec00e5b35d7b4748ea0da57249ab3db2177d13eb87909c0a142148b5 - md5: 26172b61a3f03c31e56065413ffc1f2f - depends: - - __glibc >=2.17,<3.0.a0 - - gcc_impl_linux-64 - - libgcc >=14 - - libzlib >=1.3.2,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.95.0 h2c6d0dc_1 - - sysroot_linux-64 >=2.17 - license: MIT - license_family: MIT - size: 182907915 - timestamp: 1777536012536 - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda sha256: d084a53a1ce2cea8d6f9cf45108e516a629118dd3f8fb3113d87d1dcd3eea669 md5: 5b80270d422d9fddf028cb4ce68370b2 @@ -9372,21 +9282,6 @@ packages: purls: [] size: 171986391 timestamp: 1780046427552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.95.0-hb4ea61c_1.conda - sha256: 2a26be1c1814352e37daff075b166589bbe7a087a9bffa83212c2016a81f2aa3 - md5: 89800d6dac8bff3abbe804cdd5fb6bed - depends: - - gcc_linux-64 - - rust 1.95.0.* - - rust-std-x86_64-unknown-linux-gnu 1.95.0.* - - sysroot_linux-64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11526 - timestamp: 1778593566250 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda sha256: e3ad577361d67f6c078a6a7a3898bf0617b937d44dc4ccd57aa3336f2b5778dd md5: 3e38daeb1fb05a95656ff5af089d2e4c @@ -9748,19 +9643,6 @@ packages: purls: [] size: 14226 timestamp: 1767012219987 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.16-h29f5ae7_0.conda - sha256: 0105742813f9bc6aca2cbbeef09d3443c8eb8dd6a602f42f7b654750ddec93a9 - md5: 78f3a3467d6b3c06f4d128ea333e046a - depends: - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 19364203 - timestamp: 1779427265138 - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda sha256: 2ebe8d6ae8c302ca5bf4aec532cd75ebfb00240db1c14dad9a91bace65aa083d md5: 24676eb7fd23ea3d8d69417f5f1224e0 @@ -11559,22 +11441,6 @@ packages: purls: [] size: 68567347 timestamp: 1778268606528 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - sha256: 1939c6f91d5281ee95df88c5a3aaa4887b20aa681f7387c346170ebe3270da0f - md5: 953452bf071280fa4e6c73c41de5210b - depends: - - binutils_impl_linux-aarch64 >=2.45 - - libgcc >=15.2.0 - - libgcc-devel_linux-aarch64 15.2.0 h55c397f_119 - - libgomp >=15.2.0 - - libsanitizer 15.2.0 he19c465_19 - - libstdcxx >=15.2.0 - - libstdcxx-devel_linux-aarch64 15.2.0 ha7b1723_119 - - sysroot_linux-aarch64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 73693226 - timestamp: 1778860139481 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_25.conda sha256: e52a4dc150e9bebefd7aa42147e64f3bb1e05c86128013156867e0f50c793161 md5: 37f51721bc9aee83218fbe356a65a5c6 @@ -11587,17 +11453,6 @@ packages: purls: [] size: 28918 timestamp: 1779371711447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_25.conda - sha256: 3959c6c15049c1a86bf60b155b65c2843e888024a19fca7b49300ee233a87e12 - md5: 86d74b60631ae83d3e812d907bb89101 - depends: - - gcc_impl_linux-aarch64 15.2.0.* - - binutils_linux-aarch64 - - sysroot_linux-aarch64 - license: BSD-3-Clause - license_family: BSD - size: 28934 - timestamp: 1779371716472 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.6-h90308e0_0.conda sha256: 53ac38045a8c0b6aa9cfaf784443a3744dc86ab4737c1479b44ae85c96926fe1 md5: bdd860e72c5e10eb4ffa3d61f9b02ee0 @@ -13599,16 +13454,6 @@ packages: purls: [] size: 7199495 timestamp: 1778268550110 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - sha256: 8115604f113fe2b7be95b2d22183a4dda5779c1cc6db4b826af800581498b4b3 - md5: 95210a1edbd7fc6e12afc9f8276f450a - depends: - - libgcc >=15.2.0 - - libstdcxx >=15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 7067965 - timestamp: 1778268796086 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda sha256: 0ac75f115584bb5b7783c1c94b46966251095f03467c5687b38aaaf60d8db7dc md5: b74a8a2efd31f3426aaff959759f6320 @@ -14190,22 +14035,6 @@ packages: - pkg:pypi/matplotlib?source=hash-mapping size: 8373442 timestamp: 1777000661173 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.13.3-py310he8189be_0.conda - noarch: python - sha256: f51d24036ccfba324290daf1c60e5c12a909f3fcb3f437a473f751343ee84190 - md5: f88944037e9cdf5d70ce75eb31157d20 - depends: - - python - - tomli >=1.1.0 - - libgcc >=14 - - openssl >=3.5.6,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - run_exports: {} - size: 9711678 - timestamp: 1778496705875 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda sha256: e6cf93625ef33463cb08d0e604d8d0be661751d014cf6d5e0e75733b4b992b39 md5: 933a4f20f282b1a9b67dce5852fad614 @@ -15331,35 +15160,6 @@ packages: - pkg:pypi/ruff?source=hash-mapping size: 8791276 timestamp: 1769521008362 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - sha256: 3bdc8f7f48a6086464fe8d114ea116ab8dc6d71fd20f493da31dd3693a1d6cfc - md5: 56ae3fd49c525a774ea38ba30221605f - depends: - - gcc_impl_linux-aarch64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-aarch64-unknown-linux-gnu 1.91.1 hbe8e118_0 - - sysroot_linux-aarch64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 195849499 - timestamp: 1762817258076 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.95.0-h6cf38e9_1.conda - sha256: 07fc7f5e0e7323bb3bdb33a155e93d6da1f98540fa8acfd229ba27328e036726 - md5: d3b365c484488476bbfcbcb8610f35bf - depends: - - gcc_impl_linux-aarch64 - - libgcc >=14 - - libzlib >=1.3.2,<2.0a0 - - rust-std-aarch64-unknown-linux-gnu 1.95.0 hbe8e118_1 - - sysroot_linux-aarch64 >=2.17 - license: MIT - license_family: MIT - size: 142750014 - timestamp: 1777536507521 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda sha256: 88f399576f66bc612473248413cbac5624eb00ad1a52831662ce1fc0a38916f8 md5: 489afc4ab72277b53368d9cbebb9af4d @@ -15374,21 +15174,6 @@ packages: purls: [] size: 133391007 timestamp: 1780047167214 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.95.0-hd7b9871_1.conda - sha256: 15aba52722a27ce851e7618b1d8ea70f52df65f1e9cfae0dede7422e2d19b8ec - md5: 7eaa25b515bfa78d8f63062dd47a1a33 - depends: - - gcc_linux-aarch64 - - rust 1.95.0.* - - rust-std-aarch64-unknown-linux-gnu 1.95.0.* - - sysroot_linux-aarch64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11618 - timestamp: 1778593544338 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312he5b0e10_0.conda sha256: 24e608c0c94865f40df5201175b921068a297663bcc56e538970003ddf964b59 md5: bc10849473fe9b8c95f1a07a396baf26 @@ -15731,18 +15516,6 @@ packages: purls: [] size: 14197 timestamp: 1767012435525 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.16-hda62842_0.conda - sha256: ceefd029a7caba5c98b4f861d15ec399ff8f17b1f16e8472bf757c461652ce2c - md5: 6f6d607a8b7ffff885398f9836323433 - depends: - - libstdcxx >=14 - - libgcc >=14 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 18822184 - timestamp: 1779427277488 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_0.conda sha256: d086e094a199ba83f023fbec3753bcff561677910cac31bd8c38ab84fb764820 md5: 8ce740ca4fe8871e8d90e00063e9a748 @@ -17546,15 +17319,6 @@ packages: purls: [] size: 3091520 timestamp: 1778268364856 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - sha256: 38a557eba305468ac1f90ac85e50d8defd76141cb0b8a43b2fc1aca71dd5d5f2 - md5: 683fcb168e1df9a21fa80d5aa2d9330b - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3095909 - timestamp: 1778268932148 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda sha256: e06d098cd33eac577b9c994a47243de5439ca8fd9ff6e790723fbfdc3d61a76c md5: 970ca6cb337de6a7bccfaaa344e9863b @@ -17565,15 +17329,6 @@ packages: purls: [] size: 2346647 timestamp: 1778268433769 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - sha256: fe600a63a39281e6994e27fe79360cd6bd8e576c3ce1af32ce8673b011f46c21 - md5: 18ad0f0b94071d91fa962a1bf3983a78 - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 2353893 - timestamp: 1778268665954 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda sha256: 1b4263aa5d8c8c659e8e38b66868f42867347e0c8941513ee77269afc00a5186 md5: d1a866495b9654ccfef5392b8541dc58 @@ -17584,15 +17339,6 @@ packages: purls: [] size: 20199810 timestamp: 1778268389428 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - sha256: a2385f3611d5cd25378f9cf2367183320731709c067ddd08d43330d3170f15b8 - md5: bcfe7eae40158c3e355d2f9d3ed41230 - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 20765069 - timestamp: 1778268963689 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda sha256: 918ae042d508617da3c06fb55332f1280340eb705a69a0b1d14fa6fddb790145 md5: 8c7bc9930a1b7c38557311fbea9a433f @@ -17603,15 +17349,6 @@ packages: purls: [] size: 17587589 timestamp: 1778268454520 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - sha256: 6f7ceee16070781b7d642a37a35ffdf09c66796d3df105c919526210ce220443 - md5: 61da34d67f58dd4cf16683f6cdcb06c8 - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 17627362 - timestamp: 1778268687968 - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda sha256: e4a07f357a4cf195a2345dabd98deab80f4d53574abe712a9cc7f22d3f2cc2c3 md5: 49647ac1de4d1e4b49124aedf3934e02 @@ -18278,28 +18015,6 @@ packages: - pkg:pypi/rospkg?source=hash-mapping size: 31852 timestamp: 1766125246079 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - sha256: 5648c6537f45ff93086d73eba6c05f301600c00976fc7816266106cd175d8582 - md5: eb5d17c41bf545c0bc1bf7d545825c5a - depends: - - __unix - constrains: - - rust >=1.91.1,<1.91.2.0a0 - license: MIT - license_family: MIT - size: 37290717 - timestamp: 1762816473116 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.95.0-hbe8e118_1.conda - sha256: 81dfa70b439e7b8480bcf31d7e2bf1820d9b164f331c56affb04ca058c6d9060 - md5: c2eaad5636abc17f3eea0608674fc852 - depends: - - __unix - constrains: - - rust >=1.95.0,<1.95.1.0a0 - license: MIT - license_family: MIT - size: 34966255 - timestamp: 1777536074306 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda sha256: 8e86745ce1655e126d52b6a1908e4cd8721dc031fc944dbc5ba12838f6f945a5 md5: c6a198001bc91ef594731364d10dbce3 @@ -18312,28 +18027,6 @@ packages: purls: [] size: 35596879 timestamp: 1780046657529 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - sha256: 21925ee23f5a7522a191a67f640a765ff67c4f028db95d6f41634e22449cd4af - md5: 2a3345e21b15b8659310e01e9c6eda60 - depends: - - __unix - constrains: - - rust >=1.91.1,<1.91.2.0a0 - license: MIT - license_family: MIT - size: 38139898 - timestamp: 1762816495933 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.95.0-h2c6d0dc_1.conda - sha256: 5d2e2b38a6d2a7653afc93706da04a5a14a6de9834cd34c0a2f4d7af619a3bc6 - md5: 835766243561e6c6f34b617b9eb89110 - depends: - - __unix - constrains: - - rust >=1.95.0,<1.95.1.0a0 - license: MIT - license_family: MIT - size: 36416714 - timestamp: 1777535938349 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda sha256: e8c453fc331eedd6b7a02356d177802a2c03b0bc6490d86c0e63c15ef172d53f md5: cbbc8546ba8381cb792744564cec0430 @@ -34990,144 +34683,6 @@ packages: license: LicenseRef-openrail size: 244991335 timestamp: 1771976595791 -- conda_source: bitbots_rust_nav[971bdaff] @ src/bitbots_navigation/bitbots_rust_nav - variants: - target_platform: linux-64 - depends: - - python >=3.12 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_25.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.95.0-h53717f1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.95.0-hb4ea61c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.95.0-h2c6d0dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.13.3-py310h2b5ca13_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.16-h29f5ae7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda -- conda_source: bitbots_rust_nav[c213b6c4] @ src/bitbots_navigation/bitbots_rust_nav - variants: - target_platform: linux-aarch64 - depends: - - python >=3.12 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_25.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.95.0-h6cf38e9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.95.0-hd7b9871_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.95.0-hbe8e118_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.13.3-py310he8189be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.16-hda62842_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl name: beautifulsoup4 version: 4.14.3 diff --git a/pixi.toml b/pixi.toml index 82545800b4..12350c18bb 100644 --- a/pixi.toml +++ b/pixi.toml @@ -174,9 +174,6 @@ bitbots_model_2023_04_04_philipp_yoeox_with_team_colors = ">=1.0.0,<2" bitbots_model_2022_10_07_flo_torso21_yoeox = ">=1.0.0,<2" tts-supertonic = ">=1.0.0,<2" -# Local packages -bitbots_rust_nav = { path = "src/bitbots_navigation/bitbots_rust_nav" } - # Patches pillow = "<12" # this constraint is needed as yoeo specifies the 11 major version and otherwise uv fails to solve given the constrains from the conda ecosystem. setuptools = "==68.1.2" # Pinning setuptools to avoid issues with colcon build diff --git a/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt b/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt new file mode 100644 index 0000000000..1395ef505e --- /dev/null +++ b/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt @@ -0,0 +1,44 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_rust_nav) + +find_package(ament_cmake REQUIRED) +find_package(Python3 REQUIRED COMPONENTS Interpreter Development) + +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) + +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) + +# Python extension suffix, e.g. .cpython-312-x86_64-linux-gnu.so +execute_process( + COMMAND ${Python3_EXECUTABLE} -c + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE PYTHON_EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + +set(PYTHON_INSTALL_DIR + lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) + +add_custom_target(cargo_rust_nav ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo build --profile colcon --package ${PROJECT_NAME} + --features pyo3/extension-module --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM +) + +install(CODE " + file(COPY + \"${CARGO_TARGET_DIR}/colcon/lib${PROJECT_NAME}.so\" + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/\") + file(RENAME + \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/lib${PROJECT_NAME}.so\" + \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/${PROJECT_NAME}${PYTHON_EXT_SUFFIX}\") +") + +ament_package() diff --git a/src/bitbots_navigation/bitbots_rust_nav/package.xml b/src/bitbots_navigation/bitbots_rust_nav/package.xml new file mode 100644 index 0000000000..09cb17d502 --- /dev/null +++ b/src/bitbots_navigation/bitbots_rust_nav/package.xml @@ -0,0 +1,19 @@ + + + + bitbots_rust_nav + 0.1.2 + Rust-based navigation primitives (obstacle map, visibility graph) exposed as a Python extension. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + + + ament_cmake + + From 14f4c1bd9b70d82815278e4c862ff17596a3b073 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 08:48:34 +0200 Subject: [PATCH 20/48] Fix cargo jobserver warning across all Rust cmake packages Unset MAKEFLAGS and MFLAGS before invoking cargo so it does not attempt to connect to make's jobserver (inherited via cmake but inaccessible as a subprocess). Applied to bitbots_cargo.cmake.in (r2r_cargo template), bitbots_bringup, and bitbots_rust_nav. Co-Authored-By: Claude Sonnet 4.6 --- src/bitbots_misc/bitbots_bringup/CMakeLists.txt | 2 +- src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in | 2 +- src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt index 716cab65d8..135bbfddcb 100644 --- a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt @@ -25,7 +25,7 @@ execute_process( string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) add_custom_target(cargo_teamplayer ALL - COMMAND ${CMAKE_COMMAND} "-E" "env" "cargo" "build" "--profile" "colcon" "--package" "teamplayer" "--quiet" + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "cargo" "build" "--profile" "colcon" "--package" "teamplayer" "--quiet" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} USES_TERMINAL VERBATIM diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in index f790e54487..20a10c8941 100644 --- a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -76,7 +76,7 @@ function(r2r_cargo) set(ENV{CMAKE_INCLUDE_DIRS} ${CMAKE_INCLUDE_DIRS_STR}) add_custom_target(cargo_target ALL - COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon" "--quiet" + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon" "--quiet" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} USES_TERMINAL VERBATIM diff --git a/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt b/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt index 1395ef505e..f58b11ef9f 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt +++ b/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt @@ -23,7 +23,7 @@ set(PYTHON_INSTALL_DIR lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) add_custom_target(cargo_rust_nav ALL - COMMAND ${CMAKE_COMMAND} "-E" "env" + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "PYO3_PYTHON=${Python3_EXECUTABLE}" cargo build --profile colcon --package ${PROJECT_NAME} --features pyo3/extension-module --quiet From f285ff261ff7658fbee3846e6008e4977eaadb74 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 08:52:07 +0200 Subject: [PATCH 21/48] =?UTF-8?q?Rename=20bitbots=5Frust=5Fnav=20=E2=86=92?= =?UTF-8?q?=20bitbots=5Fglobal=5Fplanner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renames directory, crate, package, and Python module. Updates the import in bitbots_path_planning/planner.py accordingly. Co-Authored-By: Claude Sonnet 4.6 --- Cargo.lock | 2 +- Cargo.toml | 2 +- .../CMakeLists.txt | 2 +- .../{bitbots_rust_nav => bitbots_global_planner}/Cargo.toml | 4 ++-- .../{bitbots_rust_nav => bitbots_global_planner}/README.md | 0 .../{bitbots_rust_nav => bitbots_global_planner}/package.xml | 2 +- .../{bitbots_rust_nav => bitbots_global_planner}/pixi.toml | 2 +- .../pyproject.toml | 2 +- .../{bitbots_rust_nav => bitbots_global_planner}/src/bin.rs | 4 ++-- .../{bitbots_rust_nav => bitbots_global_planner}/src/lib.rs | 2 +- .../{bitbots_rust_nav => bitbots_global_planner}/src/map.rs | 0 .../src/obstacle.rs | 0 .../src/planner.rs | 0 .../bitbots_path_planning/bitbots_path_planning/planner.py | 2 +- 14 files changed, 12 insertions(+), 12 deletions(-) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/CMakeLists.txt (97%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/Cargo.toml (84%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/README.md (100%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/package.xml (93%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/pixi.toml (86%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/pyproject.toml (92%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/src/bin.rs (97%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/src/lib.rs (83%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/src/map.rs (100%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/src/obstacle.rs (100%) rename src/bitbots_navigation/{bitbots_rust_nav => bitbots_global_planner}/src/planner.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 10e326a4ff..bb63900917 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -582,7 +582,7 @@ dependencies = [ ] [[package]] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" version = "0.1.2" dependencies = [ "eframe", diff --git a/Cargo.toml b/Cargo.toml index 5b99fa8c43..f28b4e4cbf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ members = [ "src/bitbots_misc/bitbots_extrinsic_calibration", "src/bitbots_misc/bitbots_bringup/tui", - "src/bitbots_navigation/bitbots_rust_nav" + "src/bitbots_navigation/bitbots_global_planner" ] # Optional but recommended for modern Cargo diff --git a/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt similarity index 97% rename from src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt rename to src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt index f58b11ef9f..85d69fa1e8 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/CMakeLists.txt +++ b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -project(bitbots_rust_nav) +project(bitbots_global_planner) find_package(ament_cmake REQUIRED) find_package(Python3 REQUIRED COMPONENTS Interpreter Development) diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml similarity index 84% rename from src/bitbots_navigation/bitbots_rust_nav/Cargo.toml rename to src/bitbots_navigation/bitbots_global_planner/Cargo.toml index b31573ab1c..1d4b35e905 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml +++ b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" version = "0.1.2" edition = "2021" [lib] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" crate-type = ["cdylib", "rlib"] [[bin]] diff --git a/src/bitbots_navigation/bitbots_rust_nav/README.md b/src/bitbots_navigation/bitbots_global_planner/README.md similarity index 100% rename from src/bitbots_navigation/bitbots_rust_nav/README.md rename to src/bitbots_navigation/bitbots_global_planner/README.md diff --git a/src/bitbots_navigation/bitbots_rust_nav/package.xml b/src/bitbots_navigation/bitbots_global_planner/package.xml similarity index 93% rename from src/bitbots_navigation/bitbots_rust_nav/package.xml rename to src/bitbots_navigation/bitbots_global_planner/package.xml index 09cb17d502..760b37a496 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/package.xml +++ b/src/bitbots_navigation/bitbots_global_planner/package.xml @@ -1,7 +1,7 @@ - bitbots_rust_nav + bitbots_global_planner 0.1.2 Rust-based navigation primitives (obstacle map, visibility graph) exposed as a Python extension. diff --git a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml b/src/bitbots_navigation/bitbots_global_planner/pixi.toml similarity index 86% rename from src/bitbots_navigation/bitbots_rust_nav/pixi.toml rename to src/bitbots_navigation/bitbots_global_planner/pixi.toml index 4e2d6f2219..d53add4872 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml +++ b/src/bitbots_navigation/bitbots_global_planner/pixi.toml @@ -1,5 +1,5 @@ [package] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" version = "0.1.0" [package.build] diff --git a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml b/src/bitbots_navigation/bitbots_global_planner/pyproject.toml similarity index 92% rename from src/bitbots_navigation/bitbots_rust_nav/pyproject.toml rename to src/bitbots_navigation/bitbots_global_planner/pyproject.toml index 933ab2aa6f..618856fd57 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml +++ b/src/bitbots_navigation/bitbots_global_planner/pyproject.toml @@ -3,7 +3,7 @@ requires = ["maturin>=1.7,<2.0"] build-backend = "maturin" [project] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" requires-python = ">=3.12" classifiers = [ "Programming Language :: Rust", diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs similarity index 97% rename from src/bitbots_navigation/bitbots_rust_nav/src/bin.rs rename to src/bitbots_navigation/bitbots_global_planner/src/bin.rs index 3f3c7311ad..fbaa9fbf79 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs @@ -1,7 +1,7 @@ #[cfg(feature = "gui")] mod gui { - use bitbots_rust_nav::map::{ObstacleMap, ObstacleMapConfig}; - use bitbots_rust_nav::obstacle::RoundObstacle; + use bitbots_global_planner::map::{ObstacleMap, ObstacleMapConfig}; + use bitbots_global_planner::obstacle::RoundObstacle; use eframe::egui; pub struct PathfindingApp { diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs similarity index 83% rename from src/bitbots_navigation/bitbots_rust_nav/src/lib.rs rename to src/bitbots_navigation/bitbots_global_planner/src/lib.rs index d60560de48..2489f64ab1 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs @@ -7,7 +7,7 @@ pub mod obstacle; pub mod planner; #[pymodule] -fn bitbots_rust_nav(m: &Bound<'_, PyModule>) -> PyResult<()> { +fn bitbots_global_planner(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/map.rs b/src/bitbots_navigation/bitbots_global_planner/src/map.rs similarity index 100% rename from src/bitbots_navigation/bitbots_rust_nav/src/map.rs rename to src/bitbots_navigation/bitbots_global_planner/src/map.rs diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs similarity index 100% rename from src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs rename to src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/planner.rs b/src/bitbots_navigation/bitbots_global_planner/src/planner.rs similarity index 100% rename from src/bitbots_navigation/bitbots_rust_nav/src/planner.rs rename to src/bitbots_navigation/bitbots_global_planner/src/planner.rs diff --git a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py index 0691e87a0a..cae4ebeb24 100644 --- a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py +++ b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py @@ -3,7 +3,7 @@ import soccer_vision_3d_msgs.msg as sv3dm import tf2_ros as tf2 -from bitbots_rust_nav import ObstacleMap, ObstacleMapConfig, RoundObstacle +from bitbots_global_planner import ObstacleMap, ObstacleMapConfig, RoundObstacle from geometry_msgs.msg import PoseStamped from nav_msgs.msg import Path from rclpy.duration import Duration From 8c1c839e50dc8a8bdc01cd8482e0601cae7904c7 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 08:52:58 +0200 Subject: [PATCH 22/48] Fix leftover bitbots_rust_nav reference in README Co-Authored-By: Claude Sonnet 4.6 --- src/bitbots_navigation/bitbots_global_planner/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitbots_navigation/bitbots_global_planner/README.md b/src/bitbots_navigation/bitbots_global_planner/README.md index ab482dfc25..60b77b455f 100644 --- a/src/bitbots_navigation/bitbots_global_planner/README.md +++ b/src/bitbots_navigation/bitbots_global_planner/README.md @@ -1,4 +1,4 @@ -# bitbots_rust_nav +# bitbots_global_planner A best-effort A*-on-visibility-graph implementation for path planning in obstacles maps where obstacles and the robot itself are assumed to be round. From 42724e90cb52e2f06cf484e206806e6f26d8ab6f Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 18:07:21 +0200 Subject: [PATCH 23/48] Remove pixi.toml and pyproject.toml from bitbots_global_planner These were for the old pixi-build-python+maturin build path. The package is now built entirely via ament_cmake/colcon. Co-Authored-By: Claude Sonnet 4.6 --- .../bitbots_global_planner/pixi.toml | 11 ----------- .../bitbots_global_planner/pyproject.toml | 16 ---------------- 2 files changed, 27 deletions(-) delete mode 100644 src/bitbots_navigation/bitbots_global_planner/pixi.toml delete mode 100644 src/bitbots_navigation/bitbots_global_planner/pyproject.toml diff --git a/src/bitbots_navigation/bitbots_global_planner/pixi.toml b/src/bitbots_navigation/bitbots_global_planner/pixi.toml deleted file mode 100644 index d53add4872..0000000000 --- a/src/bitbots_navigation/bitbots_global_planner/pixi.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "bitbots_global_planner" -version = "0.1.0" - -[package.build] -backend = { name = "pixi-build-python", version = ">=0.4.0" } - -[package.host-dependencies] -rust = ">=1.91.1,<1.92" -maturin = ">=1.10.2,<2" -python = "==3.12" diff --git a/src/bitbots_navigation/bitbots_global_planner/pyproject.toml b/src/bitbots_navigation/bitbots_global_planner/pyproject.toml deleted file mode 100644 index 618856fd57..0000000000 --- a/src/bitbots_navigation/bitbots_global_planner/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[build-system] -requires = ["maturin>=1.7,<2.0"] -build-backend = "maturin" - -[project] -name = "bitbots_global_planner" -requires-python = ">=3.12" -classifiers = [ - "Programming Language :: Rust", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] -dynamic = ["version"] - -[tool.maturin] -features = ["pyo3/extension-module"] From 778d91d707b6a6af3a738e27b69cdaa6079b690c Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 19:12:35 +0200 Subject: [PATCH 24/48] Add cargo_pyo3_extension() and cargo_binary() to bitbots_cargo cargo_pyo3_extension([PACKAGE ]) Builds a pyo3 cdylib and installs it flat into site-packages so `import ` works after sourcing install/setup.bash. cargo_binary( [PACKAGE ]) Builds a Rust binary (crate defaults to binary name) and installs it to lib/${PROJECT_NAME}/ for `ros2 run`. Refactor bitbots_global_planner and bitbots_bringup to use these functions, reducing each CMakeLists.txt to a single call. Co-Authored-By: Claude Sonnet 4.6 --- .../bitbots_bringup/CMakeLists.txt | 25 +----- src/bitbots_misc/bitbots_bringup/package.xml | 1 + .../cmake/bitbots_cargo.cmake.in | 85 +++++++++++++++++++ .../bitbots_global_planner/CMakeLists.txt | 39 +-------- .../bitbots_global_planner/package.xml | 1 + 5 files changed, 91 insertions(+), 60 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt index 135bbfddcb..0f33203a7b 100644 --- a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt @@ -4,34 +4,13 @@ project(bitbots_bringup) find_package(bitbots_docs REQUIRED) find_package(ament_cmake REQUIRED) find_package(ament_cmake_python REQUIRED) +find_package(bitbots_cargo REQUIRED) enable_bitbots_docs() install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) -if(WIN32) - set(SUFFIX ".exe") -else() - set(SUFFIX "") -endif() - -execute_process( - COMMAND cargo metadata --no-deps --format-version=1 - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE CARGO_METADATA_JSON - OUTPUT_STRIP_TRAILING_WHITESPACE) - -string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) - -add_custom_target(cargo_teamplayer ALL - COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "cargo" "build" "--profile" "colcon" "--package" "teamplayer" "--quiet" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - USES_TERMINAL - VERBATIM -) - -install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/teamplayer${SUFFIX} - DESTINATION lib/${PROJECT_NAME}) +cargo_binary(teamplayer) ament_package() diff --git a/src/bitbots_misc/bitbots_bringup/package.xml b/src/bitbots_misc/bitbots_bringup/package.xml index 2ef2d73161..f39c92a2b1 100644 --- a/src/bitbots_misc/bitbots_bringup/package.xml +++ b/src/bitbots_misc/bitbots_bringup/package.xml @@ -12,6 +12,7 @@ Hamburg Bit-Bots ament_cmake + bitbots_cargo bitbots_docs diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in index 20a10c8941..9a7c47de5f 100644 --- a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -83,3 +83,88 @@ function(r2r_cargo) ) endfunction() + +# Private helper: resolve the cargo workspace target directory. +function(_cargo_get_target_dir OUT_DIR) + execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE _METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(JSON _TARGET_DIR GET "${_METADATA_JSON}" target_directory) + set(${OUT_DIR} "${_TARGET_DIR}" PARENT_SCOPE) +endfunction() + +# Build a pyo3 Python extension and install it flat into site-packages so +# `import ` works after sourcing install/setup.bash. +# +# Usage: cargo_pyo3_extension([PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_pyo3_extension) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${PROJECT_NAME}) + endif() + + find_package(Python3 REQUIRED COMPONENTS Interpreter Development) + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + execute_process( + COMMAND ${Python3_EXECUTABLE} -c + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE _PYTHON_EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(_PYTHON_INSTALL_DIR + lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) + + add_custom_target(cargo_${_ARGS_PACKAGE} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo build --profile colcon --package ${_ARGS_PACKAGE} + --features pyo3/extension-module --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(CODE " + file(COPY + \"${_CARGO_TARGET_DIR}/colcon/lib${_ARGS_PACKAGE}.so\" + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/\") + file(RENAME + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/lib${_ARGS_PACKAGE}.so\" + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/${_ARGS_PACKAGE}${_PYTHON_EXT_SUFFIX}\") + ") +endfunction() + +# Build a standalone Rust binary and install it to lib/${PROJECT_NAME}/ so +# it is launchable via `ros2 run ${PROJECT_NAME} `. +# +# Usage: cargo_binary( [PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_binary BINARY_NAME) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${BINARY_NAME}) + endif() + + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + if(WIN32) + set(_SUFFIX ".exe") + else() + set(_SUFFIX "") + endif() + + add_custom_target(cargo_${BINARY_NAME} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo build --profile colcon --package ${_ARGS_PACKAGE} --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(PROGRAMS ${_CARGO_TARGET_DIR}/colcon/${BINARY_NAME}${_SUFFIX} + DESTINATION lib/${PROJECT_NAME}) +endfunction() diff --git a/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt index 85d69fa1e8..bae93fdc9b 100644 --- a/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt +++ b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt @@ -2,43 +2,8 @@ cmake_minimum_required(VERSION 3.5) project(bitbots_global_planner) find_package(ament_cmake REQUIRED) -find_package(Python3 REQUIRED COMPONENTS Interpreter Development) +find_package(bitbots_cargo REQUIRED) -execute_process( - COMMAND cargo metadata --no-deps --format-version=1 - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE CARGO_METADATA_JSON - OUTPUT_STRIP_TRAILING_WHITESPACE) - -string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) - -# Python extension suffix, e.g. .cpython-312-x86_64-linux-gnu.so -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PYTHON_EXT_SUFFIX - OUTPUT_STRIP_TRAILING_WHITESPACE) - -set(PYTHON_INSTALL_DIR - lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) - -add_custom_target(cargo_rust_nav ALL - COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" - "PYO3_PYTHON=${Python3_EXECUTABLE}" - cargo build --profile colcon --package ${PROJECT_NAME} - --features pyo3/extension-module --quiet - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - USES_TERMINAL - VERBATIM -) - -install(CODE " - file(COPY - \"${CARGO_TARGET_DIR}/colcon/lib${PROJECT_NAME}.so\" - DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/\") - file(RENAME - \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/lib${PROJECT_NAME}.so\" - \"\${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/${PROJECT_NAME}${PYTHON_EXT_SUFFIX}\") -") +cargo_pyo3_extension() ament_package() diff --git a/src/bitbots_navigation/bitbots_global_planner/package.xml b/src/bitbots_navigation/bitbots_global_planner/package.xml index 760b37a496..ad5d5884b0 100644 --- a/src/bitbots_navigation/bitbots_global_planner/package.xml +++ b/src/bitbots_navigation/bitbots_global_planner/package.xml @@ -12,6 +12,7 @@ Hamburg Bit-Bots ament_cmake + bitbots_cargo ament_cmake From 36ba63a8313d3f0709ec65bd3820596ec6cedb48 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 19:55:22 +0200 Subject: [PATCH 25/48] Add cargo test integration to bitbots_cargo cmake functions Each of r2r_cargo(), cargo_pyo3_extension(), and cargo_binary() now registers a ctest test under BUILD_TESTING that runs `cargo test --package `, making Rust unit tests visible to colcon test. Co-Authored-By: Claude Sonnet 4.6 --- .../cmake/bitbots_cargo.cmake.in | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in index 9a7c47de5f..d70732a9d1 100644 --- a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -82,6 +82,18 @@ function(r2r_cargo) VERBATIM ) + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "RUSTFLAGS=$ENV{RUSTFLAGS}" + "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" + "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" + cargo test --package ${PROJECT_NAME} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() + endfunction() # Private helper: resolve the cargo workspace target directory. @@ -136,6 +148,16 @@ function(cargo_pyo3_extension) \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/lib${_ARGS_PACKAGE}.so\" \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/${_ARGS_PACKAGE}${_PYTHON_EXT_SUFFIX}\") ") + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo test --package ${_ARGS_PACKAGE} --features pyo3/extension-module + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() endfunction() # Build a standalone Rust binary and install it to lib/${PROJECT_NAME}/ so @@ -167,4 +189,13 @@ function(cargo_binary BINARY_NAME) install(PROGRAMS ${_CARGO_TARGET_DIR}/colcon/${BINARY_NAME}${_SUFFIX} DESTINATION lib/${PROJECT_NAME}) + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo test --package ${_ARGS_PACKAGE} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() endfunction() From c8eb8a732b8ab98c4af6ab5cb3cd026852c23444 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 21:19:54 +0200 Subject: [PATCH 26/48] Install launch and config dirs for bitbots_extrinsic_calibration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These were missing from the CMakeLists.txt after the C++ → Rust rewrite, causing ros2 launch to fail finding the launch files. Co-Authored-By: Claude Sonnet 4.6 --- src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt index 0537d044ec..96f2ba49a9 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt @@ -33,5 +33,8 @@ message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} DESTINATION lib/${PROJECT_NAME}) +install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) +install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) + # we need this for ros/colcon ament_package() From 2e4b9524e41a1ef291a130f2634e6f92e64b3480 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 21:23:21 +0200 Subject: [PATCH 27/48] Enable debug symbols in colcon cargo profile debug = true adds debug info to the release build at no runtime cost, giving readable backtraces and debugger support on deployed binaries. Co-Authored-By: Claude Sonnet 4.6 --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index f28b4e4cbf..ada4e967c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,4 @@ resolver = "2" # separate from "normal" rust building. [profile.colcon] inherits = "release" +debug = true From d592e408efd6b5038d343b2b85e3c2352c920253 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Thu, 4 Jun 2026 23:48:30 +0200 Subject: [PATCH 28/48] Forward child stderr to teamplayer stderr in headless mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Child stdout and stderr were both written to teamplayer's stdout, making it impossible for log aggregators to distinguish errors. Add HeadlessLine enum and a single shared headless_log queue. Both pumps push tagged lines into the same queue in arrival order, preserving stdout/stderr interleaving. The headless drain dispatches Stdout to println! and Stderr to eprintln!. TUI mode is unchanged — all_logs still receives the merged [ERR]-prefixed stream for display in the log panels. Co-Authored-By: Claude Sonnet 4.6 --- .../bitbots_bringup/tui/src/app.rs | 45 +++++++++++++------ .../bitbots_bringup/tui/src/main.rs | 9 ++-- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index 675e959d99..400e17a7bd 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -14,6 +14,11 @@ use crate::components::{COMPONENT_DEFS, FIELDNAME_DEFAULT_HW, FIELDNAME_DEFAULT_ // ─── State types ────────────────────────────────────────────────────────────── +pub enum HeadlessLine { + Stdout(String), + Stderr(String), +} + #[derive(Clone, Debug, PartialEq)] pub enum ProcState { Idle, @@ -99,6 +104,8 @@ pub struct App { pub msg_rx: mpsc::UnboundedReceiver, pub log_scroll: usize, pub all_logs: Arc>>, + /// Interleaved stdout/stderr for headless mode; preserves ordering under load. + pub headless_log: Arc>>, pub show_log_panel: bool, } @@ -126,6 +133,7 @@ impl App { msg_rx, log_scroll: 0, all_logs: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), + headless_log: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), show_log_panel: true, } } @@ -245,6 +253,7 @@ impl App { let logs = self.components[comp_idx].logs.clone(); let all_logs = self.all_logs.clone(); + let headless_log = self.headless_log.clone(); self.components[comp_idx].state = ProcState::Running; self.components[comp_idx].pids.clear(); self.components[comp_idx].task_handles.clear(); @@ -256,6 +265,7 @@ impl App { let tx = self.msg_tx.clone(); let logs = logs.clone(); let all_logs = all_logs.clone(); + let headless_log = headless_log.clone(); let key = key.clone(); let mut child = match Command::new(&cmd_args[0]) @@ -288,43 +298,52 @@ impl App { mut r: BufReader, logs: Arc>>, all_logs: Arc>>, - prefix: &'static str, + headless_log: Arc>>, + is_stderr: bool, comp_name: &'static str, ) { + let tui_prefix = if is_stderr { "[ERR] " } else { "" }; let mut line = String::new(); while let Ok(n) = r.read_line(&mut line).await { if n == 0 { break; } - let entry = format!("{}{}", prefix, line.trim_end_matches('\n')); + let raw = line.trim_end_matches('\n'); + let tui_entry = format!("{}{}", tui_prefix, raw); { let mut l = logs.lock().unwrap(); - if l.len() >= 2000 { - l.pop_front(); - } - l.push_back(entry.clone()); + if l.len() >= 2000 { l.pop_front(); } + l.push_back(tui_entry.clone()); } { let mut l = all_logs.lock().unwrap(); - if l.len() >= 5000 { - l.pop_front(); - } - l.push_back(format!("[{comp_name}] {entry}")); + if l.len() >= 5000 { l.pop_front(); } + l.push_back(format!("[{comp_name}] {tui_entry}")); + } + { + let tagged = format!("[{comp_name}] {raw}"); + let mut l = headless_log.lock().unwrap(); + if l.len() >= 5000 { l.pop_front(); } + l.push_back(if is_stderr { + HeadlessLine::Stderr(tagged) + } else { + HeadlessLine::Stdout(tagged) + }); } line.clear(); } } // Read stdout and stderr concurrently so neither blocks the other. - let (logs2, all2) = (logs.clone(), all_logs.clone()); + let (logs2, all2, hl2) = (logs.clone(), all_logs.clone(), headless_log.clone()); tokio::join!( async move { if let Some(r) = stdout { - pump(r, logs2, all2, "", comp_name).await; + pump(r, logs2, all2, hl2, false, comp_name).await; } }, async move { if let Some(r) = stderr { - pump(r, logs, all_logs, "[ERR] ", comp_name).await; + pump(r, logs, all_logs, headless_log, true, comp_name).await; } } ); diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs index fc4ed7760f..648d289a6c 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -157,9 +157,12 @@ async fn run_headless(app: &mut App) -> Result<()> { app.start_component(idx).await; } { - let mut logs = app.all_logs.lock().unwrap(); - while let Some(entry) = logs.pop_front() { - println!("{entry}"); + let mut q = app.headless_log.lock().unwrap(); + while let Some(entry) = q.pop_front() { + match entry { + app::HeadlessLine::Stdout(s) => println!("{s}"), + app::HeadlessLine::Stderr(s) => eprintln!("{s}"), + } } } let any_running = app.components.iter().any(|c| { From 0934d16942d225cb6a542af664db426bf1f9675b Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Fri, 5 Jun 2026 01:30:52 +0200 Subject: [PATCH 29/48] Fix lowlevel double-launch; TUI nav, AllLogs, scrollbar, confirm dialogs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit motion.launch: add lowlevel arg (default true) with nested group guard. TUI always passes lowlevel:=false; Lowlevel component manages it. Config navigation: - Left/Right navigate the flags row and between grid columns. - Down/Up are row-aware: Down from any flag jumps to first component; Up from top of left column → Zenoh, top of right column → DsdFile. Runtime sidebar navigation (replaces v toggle): - Right: show sidebar if hidden; open AllLogs full screen if already shown. - Left: hide sidebar. AllLogs screen: full-screen joined log with scrollbar and follow mode. Log views: scrollbar widget, auto-follow with f/G, yellow hint when scrolled. Confirm dialogs: Clear popup, 6-row sizing, confirm/cancel hint. Co-Authored-By: Claude Sonnet 4.6 --- .../bitbots_bringup/launch/motion.launch | 5 +- .../bitbots_bringup/tui/src/app.rs | 84 +++++++++- .../bitbots_bringup/tui/src/components.rs | 2 +- .../bitbots_bringup/tui/src/input.rs | 96 +++++++++-- .../bitbots_bringup/tui/src/main.rs | 36 ++-- .../bitbots_bringup/tui/src/ui.rs | 155 ++++++++++++++++-- 6 files changed, 329 insertions(+), 49 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/launch/motion.launch b/src/bitbots_misc/bitbots_bringup/launch/motion.launch index eccf0e5df1..8308c8b070 100644 --- a/src/bitbots_misc/bitbots_bringup/launch/motion.launch +++ b/src/bitbots_misc/bitbots_bringup/launch/motion.launch @@ -5,10 +5,13 @@ + - + + + diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index 400e17a7bd..9475820207 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -77,6 +77,12 @@ pub enum Screen { Config, Runtime, Logs(usize), + AllLogs, +} + +pub enum ConfirmAction { + Quit, + StopAll, } #[derive(Clone, PartialEq, Debug)] @@ -103,10 +109,12 @@ pub struct App { pub msg_tx: mpsc::UnboundedSender, pub msg_rx: mpsc::UnboundedReceiver, pub log_scroll: usize, + pub log_follow: bool, pub all_logs: Arc>>, /// Interleaved stdout/stderr for headless mode; preserves ordering under load. pub headless_log: Arc>>, pub show_log_panel: bool, + pub confirm_action: Option, } impl App { @@ -132,9 +140,11 @@ impl App { msg_tx, msg_rx, log_scroll: 0, + log_follow: true, all_logs: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), headless_log: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), show_log_panel: true, + confirm_action: None, } } @@ -201,16 +211,78 @@ impl App { items } + /// Down: flags row → first component; within a column move down one row; Start → flags. pub fn config_focus_next(&mut self) { - let items = self.config_focus_items(); - let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); - self.config_focus = items[(pos + 1) % items.len()].clone(); + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + self.config_focus = match self.config_focus.clone() { + // Flags row: jump straight into the component grid + ConfigFocus::Zenoh | ConfigFocus::Sim | ConfigFocus::Fieldname | ConfigFocus::DsdFile => { + if n > 0 { ConfigFocus::Component(0) } else { ConfigFocus::Start } + } + // Left column: move down or fall through to Start + ConfigFocus::Component(i) if i < left_count => { + if i + 1 < left_count { ConfigFocus::Component(i + 1) } else { ConfigFocus::Start } + } + // Right column: move down or fall through to Start + ConfigFocus::Component(i) => { + if i + 1 < n { ConfigFocus::Component(i + 1) } else { ConfigFocus::Start } + } + // Start wraps back to flags + ConfigFocus::Start => ConfigFocus::Zenoh, + }; } + /// Up: top of left column → Zenoh; top of right column → DsdFile; Start → last component; flags → Start. pub fn config_focus_prev(&mut self) { - let items = self.config_focus_items(); - let pos = items.iter().position(|f| f == &self.config_focus).unwrap_or(0); - self.config_focus = items[(pos + items.len() - 1) % items.len()].clone(); + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + self.config_focus = match self.config_focus.clone() { + // Flags row wraps to Start + ConfigFocus::Zenoh | ConfigFocus::Sim | ConfigFocus::Fieldname | ConfigFocus::DsdFile => { + ConfigFocus::Start + } + // Top of left column → back to flags (left side) + ConfigFocus::Component(0) => ConfigFocus::Zenoh, + // Top of right column → back to flags (right side) + ConfigFocus::Component(i) if i == left_count => ConfigFocus::DsdFile, + // Move up within a column + ConfigFocus::Component(i) => ConfigFocus::Component(i - 1), + // Start → bottom of whichever column is longer + ConfigFocus::Start => { + if n > 0 { ConfigFocus::Component(n - 1) } else { ConfigFocus::Zenoh } + } + }; + } + + pub fn config_focus_right(&mut self) { + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + match self.config_focus.clone() { + ConfigFocus::Zenoh => self.config_focus = ConfigFocus::Sim, + ConfigFocus::Sim => self.config_focus = ConfigFocus::Fieldname, + ConfigFocus::Fieldname => self.config_focus = ConfigFocus::DsdFile, + ConfigFocus::Component(i) if i < left_count => { + let right = i + left_count; + if right < n { + self.config_focus = ConfigFocus::Component(right); + } + } + _ => {} + } + } + + pub fn config_focus_left(&mut self) { + let left_count = (self.toggleable_indices().len() + 1) / 2; + match self.config_focus.clone() { + ConfigFocus::Sim => self.config_focus = ConfigFocus::Zenoh, + ConfigFocus::Fieldname => self.config_focus = ConfigFocus::Sim, + ConfigFocus::DsdFile => self.config_focus = ConfigFocus::Fieldname, + ConfigFocus::Component(i) if i >= left_count => { + self.config_focus = ConfigFocus::Component(i - left_count); + } + _ => {} + } } pub fn runtime_visible_indices(&self) -> Vec { diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs index 86221896e3..b53ec6d8c5 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs @@ -149,7 +149,7 @@ pub static COMPONENT_DEFS: &[ComponentDef] = &[ infrastructure: false, hardware_only: false, sim_component: false, - cmds: |p| vec![ros2_launch("bitbots_bringup", "motion.launch", &[&sim(p)])], + cmds: |p| vec![ros2_launch("bitbots_bringup", "motion.launch", &[&sim(p), "lowlevel:=false"])], }, ComponentDef { name: "Game Controller", diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs index 2ee9e8ab9d..d56c6e9641 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -1,6 +1,6 @@ use crossterm::event::{KeyCode, KeyModifiers}; -use crate::app::{App, ConfigFocus, ProcState, Screen}; +use crate::app::{App, ConfirmAction, ConfigFocus, ProcState, Screen}; use crate::components::COMPONENT_DEFS; pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { @@ -15,6 +15,8 @@ pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifi } (_, KeyCode::Down) => app.config_focus_next(), (_, KeyCode::Up) => app.config_focus_prev(), + (_, KeyCode::Right) => app.config_focus_right(), + (_, KeyCode::Left) => app.config_focus_left(), // Zenoh toggle (ConfigFocus::Zenoh, KeyCode::Char(' ') | KeyCode::Enter) => { @@ -73,7 +75,9 @@ pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifi } // Quit - (_, KeyCode::Char('q') | KeyCode::Char('Q') | KeyCode::Esc) => return true, + (_, KeyCode::Char('q') | KeyCode::Char('Q') | KeyCode::Esc) => { + app.confirm_action = Some(ConfirmAction::Quit); + } _ => {} } @@ -111,7 +115,7 @@ pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModi if let Some(idx) = comp_idx { match app.components[idx].state { ProcState::Running => app.restart_component(idx), - ProcState::Stopping | ProcState::Restarting => {} // already terminating + ProcState::Stopping | ProcState::Restarting => {} _ => app.start_component(idx).await, } } @@ -120,15 +124,33 @@ pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModi KeyCode::Char('l') => { if let Some(idx) = comp_idx { app.log_scroll = app.components[idx].logs.lock().unwrap().len().saturating_sub(1); + app.log_follow = true; app.screen = Screen::Logs(idx); } } - KeyCode::Char('v') => app.show_log_panel = !app.show_log_panel, + // Right: show sidebar if hidden, open AllLogs if sidebar already visible + KeyCode::Right => { + if app.show_log_panel { + app.log_scroll = app.all_logs.lock().unwrap().len().saturating_sub(1); + app.log_follow = true; + app.screen = Screen::AllLogs; + } else { + app.show_log_panel = true; + } + } + + // Left: hide sidebar + KeyCode::Left => { + app.show_log_panel = false; + } + KeyCode::Char('a') => app.start_all_enabled().await, - KeyCode::Char('x') => app.stop_all().await, + KeyCode::Char('x') => app.confirm_action = Some(ConfirmAction::StopAll), KeyCode::Esc => app.screen = Screen::Config, - KeyCode::Char('q') | KeyCode::Char('Q') => return true, + KeyCode::Char('q') | KeyCode::Char('Q') => { + app.confirm_action = Some(ConfirmAction::Quit); + } _ => {} } false @@ -141,25 +163,75 @@ pub async fn handle_logs_key( comp_idx: usize, ) -> bool { let log_len = app.components[comp_idx].logs.lock().unwrap().len(); + scroll_keys(app, key, log_len); + match key { + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { + app.screen = Screen::Runtime; + } + KeyCode::Char('Q') => app.confirm_action = Some(ConfirmAction::Quit), + _ => {} + } + false +} + +pub fn handle_all_logs_key(app: &mut App, key: KeyCode) -> bool { + let log_len = app.all_logs.lock().unwrap().len(); + scroll_keys(app, key, log_len); + match key { + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') | KeyCode::Left => { + app.screen = Screen::Runtime; + } + KeyCode::Char('Q') => app.confirm_action = Some(ConfirmAction::Quit), + _ => {} + } + false +} + +/// Shared scroll key handling for both log views. +fn scroll_keys(app: &mut App, key: KeyCode, log_len: usize) { match key { KeyCode::Down | KeyCode::Char('j') => { - app.log_scroll = (app.log_scroll + 1).min(log_len.saturating_sub(1)); + let next = (app.log_scroll + 1).min(log_len.saturating_sub(1)); + app.log_scroll = next; + app.log_follow = next >= log_len.saturating_sub(1); } KeyCode::Up | KeyCode::Char('k') => { app.log_scroll = app.log_scroll.saturating_sub(1); + app.log_follow = false; } KeyCode::PageDown => { - app.log_scroll = (app.log_scroll + 20).min(log_len.saturating_sub(1)); + let next = (app.log_scroll + 20).min(log_len.saturating_sub(1)); + app.log_scroll = next; + app.log_follow = next >= log_len.saturating_sub(1); } KeyCode::PageUp => { app.log_scroll = app.log_scroll.saturating_sub(20); + app.log_follow = false; } - KeyCode::Char('G') => app.log_scroll = log_len.saturating_sub(1), - KeyCode::Char('g') => app.log_scroll = 0, - KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { - app.screen = Screen::Runtime; + KeyCode::Char('G') | KeyCode::Char('f') => { + app.log_scroll = log_len.saturating_sub(1); + app.log_follow = true; + } + KeyCode::Char('g') => { + app.log_scroll = 0; + app.log_follow = false; } _ => {} } +} + +pub async fn handle_confirm_key(app: &mut App, key: KeyCode) -> bool { + match key { + KeyCode::Char('y') | KeyCode::Char('Y') | KeyCode::Enter => { + match app.confirm_action.take() { + Some(ConfirmAction::Quit) => return true, + Some(ConfirmAction::StopAll) => app.stop_all().await, + None => {} + } + } + _ => { + app.confirm_action = None; + } + } false } diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs index 648d289a6c..47ad604379 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -200,10 +200,13 @@ async fn run_tui( for idx in to_restart { app.start_component(idx).await; } - if let Screen::Logs(idx) = &app.screen { - let idx = *idx; - let len = app.components[idx].logs.lock().unwrap().len(); - if app.log_scroll + 5 >= len.saturating_sub(1) { + if app.log_follow { + let len = match &app.screen { + Screen::Logs(idx) => app.components[*idx].logs.lock().unwrap().len(), + Screen::AllLogs => app.all_logs.lock().unwrap().len(), + _ => 0, + }; + if len > 0 { app.log_scroll = len.saturating_sub(1); } } @@ -212,15 +215,22 @@ async fn run_tui( maybe_event = event_stream.next() => { let Some(Ok(event)) = maybe_event else { break }; if let Event::Key(key_event) = event { - let quit = match app.screen.clone() { - Screen::Config => { - input::handle_config_key(app, key_event.code, key_event.modifiers).await - } - Screen::Runtime => { - input::handle_runtime_key(app, key_event.code, key_event.modifiers).await - } - Screen::Logs(idx) => { - input::handle_logs_key(app, key_event.code, key_event.modifiers, idx).await + let quit = if app.confirm_action.is_some() { + input::handle_confirm_key(app, key_event.code).await + } else { + match app.screen.clone() { + Screen::Config => { + input::handle_config_key(app, key_event.code, key_event.modifiers).await + } + Screen::Runtime => { + input::handle_runtime_key(app, key_event.code, key_event.modifiers).await + } + Screen::Logs(idx) => { + input::handle_logs_key(app, key_event.code, key_event.modifiers, idx).await + } + Screen::AllLogs => { + input::handle_all_logs_key(app, key_event.code) + } } }; if quit { diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index 422d888bba..a8ec6204f1 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -2,11 +2,11 @@ use ratatui::{ layout::{Alignment, Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, text::{Line, Span}, - widgets::{Block, Borders, Paragraph, Wrap}, + widgets::{Block, Borders, Clear, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, Wrap}, Frame, }; -use crate::app::{App, ConfigFocus, ProcState, Screen}; +use crate::app::{App, ConfirmAction, ConfigFocus, ProcState, Screen}; use crate::components::COMPONENT_DEFS; // ─── Banner ─────────────────────────────────────────────────────────────────── @@ -46,6 +46,10 @@ pub fn draw(f: &mut Frame, app: &App) { Screen::Config => draw_config(f, app), Screen::Runtime => draw_runtime(f, app), Screen::Logs(idx) => draw_logs(f, app, *idx), + Screen::AllLogs => draw_all_logs(f, app), + } + if app.confirm_action.is_some() { + draw_confirm_popup(f, app); } } @@ -78,7 +82,7 @@ pub fn draw_config(f: &mut Frame, app: &App) { draw_start_button(f, app, chunks[3]); f.render_widget( - Paragraph::new(" Tab/↑↓: navigate Space/Enter: toggle/activate q: quit") + Paragraph::new(" Tab/↑↓/←→: navigate Space/Enter: toggle/activate q: exit (confirm)") .style(Style::default().fg(Color::DarkGray)), chunks[4], ); @@ -277,9 +281,9 @@ pub fn draw_runtime(f: &mut Frame, app: &App) { } let hint = if app.show_log_panel { - " ↑↓/jk: select s: stop/start r: restart l: logs a: start all x: stop all v: hide logs Esc: config q: quit" + " ↑↓/jk: select l: comp logs →: all logs ←: hide logs s: stop/start r: restart a: start all x: stop all Esc: config q: quit" } else { - " ↑↓/jk: select s: stop/start r: restart l: logs a: start all x: stop all v: show logs Esc: config q: quit" + " ↑↓/jk: select l: comp logs →: show logs s: stop/start r: restart a: start all x: stop all Esc: config q: quit" }; f.render_widget( Paragraph::new(hint).style(Style::default().fg(Color::DarkGray)), @@ -472,30 +476,149 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { chunks[0], ); - let log_height = chunks[1].height as usize; - let lines: Vec> = { + let log_height = chunks[1].height.saturating_sub(2) as usize; // inner height (minus borders) + let (lines, total, scroll) = { let logs = comp.logs.lock().unwrap(); let total = logs.len(); - let max_scroll = if total > log_height { total - log_height } else { 0 }; + let max_scroll = total.saturating_sub(log_height); let scroll = app.log_scroll.min(max_scroll); - logs.iter() + let lines: Vec> = logs + .iter() .skip(scroll) - .take(log_height * 2) // extra entries so wrapped lines still fill the panel + .take(log_height * 2) .map(|s| ansi_to_line(s)) - .collect() + .collect(); + (lines, total, scroll) }; + let log_block = Block::default().borders(Borders::ALL); + let log_area = chunks[1]; f.render_widget( Paragraph::new(lines) - .block(Block::default().borders(Borders::ALL)) + .block(log_block) .style(Style::default().fg(Color::White)) .wrap(Wrap { trim: false }), - chunks[1], + log_area, + ); + + let mut scrollbar_state = ScrollbarState::new(total).position(scroll); + f.render_stateful_widget( + Scrollbar::new(ScrollbarOrientation::VerticalRight), + log_area, + &mut scrollbar_state, + ); + + let hint = if app.log_follow { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l: back".to_string() + } else { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l: back [SCROLLED — f/G to re-follow]".to_string() + }; + let hint_style = if app.log_follow { + Style::default().fg(Color::DarkGray) + } else { + Style::default().fg(Color::Yellow) + }; + f.render_widget(Paragraph::new(hint).style(hint_style), chunks[2]); +} + +// ─── All-logs screen ────────────────────────────────────────────────────────── + +pub fn draw_all_logs(f: &mut Frame, app: &App) { + let area = f.area(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([Constraint::Min(0), Constraint::Length(1)]) + .split(area); + + let log_height = chunks[0].height.saturating_sub(2) as usize; + let (lines, total, scroll) = { + let logs = app.all_logs.lock().unwrap(); + let total = logs.len(); + let max_scroll = total.saturating_sub(log_height); + let scroll = app.log_scroll.min(max_scroll); + let lines: Vec> = logs + .iter() + .skip(scroll) + .take(log_height * 2) + .map(|entry| { + if let Some(close) = entry.find("] ") { + let tag = &entry[..close + 1]; + let rest = &entry[close + 2..]; + let mut spans: Vec> = vec![ + Span::styled( + tag.to_owned(), + Style::default().fg(tag_color(tag)).add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + ]; + spans.extend(ansi_to_line(rest).spans); + Line::from(spans) + } else { + ansi_to_line(entry) + } + }) + .collect(); + (lines, total, scroll) + }; + + let log_area = chunks[0]; + f.render_widget( + Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL).title(" All Logs ")) + .style(Style::default().fg(Color::White)) + .wrap(Wrap { trim: false }), + log_area, ); + let mut scrollbar_state = ScrollbarState::new(total).position(scroll); + f.render_stateful_widget( + Scrollbar::new(ScrollbarOrientation::VerticalRight), + log_area, + &mut scrollbar_state, + ); + + let hint = if app.log_follow { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l/←: back" + } else { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l/←: back [SCROLLED — f/G to re-follow]" + }; + let hint_style = if app.log_follow { + Style::default().fg(Color::DarkGray) + } else { + Style::default().fg(Color::Yellow) + }; + f.render_widget(Paragraph::new(hint).style(hint_style), chunks[1]); +} + +// ─── Confirmation popup ─────────────────────────────────────────────────────── + +pub fn draw_confirm_popup(f: &mut Frame, app: &App) { + let (title, msg) = match &app.confirm_action { + Some(ConfirmAction::Quit) => (" Exit ", "Exit teamplayer?\nAll running components will be stopped."), + Some(ConfirmAction::StopAll) => (" Stop All ", "Stop all running components?"), + None => return, + }; + + let area = f.area(); + let popup_w = 52u16.min(area.width.saturating_sub(4)); + let popup_h = 6u16; // 2 border + question (1-2 lines) + blank + hint + let x = area.x + (area.width.saturating_sub(popup_w)) / 2; + let y = area.y + (area.height.saturating_sub(popup_h)) / 2; + let popup_area = Rect::new(x, y, popup_w, popup_h); + + f.render_widget(Clear, popup_area); + + let content = format!("{msg}\n\nY / Enter — confirm N / Esc — cancel"); f.render_widget( - Paragraph::new(" ↑↓/jk/PgUp/PgDn: scroll g: top G: bottom Esc/q/l: back") - .style(Style::default().fg(Color::DarkGray)), - chunks[2], + Paragraph::new(content) + .block( + Block::default() + .borders(Borders::ALL) + .title(title) + .border_style(Style::default().fg(Color::Yellow)), + ) + .style(Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD)) + .alignment(Alignment::Center), + popup_area, ); } From aaa396063db53314328471ec5b4035457e600b3d Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Fri, 5 Jun 2026 01:40:21 +0200 Subject: [PATCH 30/48] Fix scrollbar position and over-scroll dead zone in log views ScrollbarState content_length was set to total lines instead of total - viewport_height, so the thumb could never reach the bottom. Add log_viewport_height (Cell) to App. The draw functions write the actual viewport height on each frame; scroll_keys reads it to clamp log_scroll to max_scroll = log_len - viewport_height. This eliminates the silent dead zone where Down presses had no visual effect. Co-Authored-By: Claude Sonnet 4.6 --- src/bitbots_misc/bitbots_bringup/tui/src/app.rs | 3 +++ src/bitbots_misc/bitbots_bringup/tui/src/input.rs | 12 +++++++----- src/bitbots_misc/bitbots_bringup/tui/src/ui.rs | 6 ++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index 9475820207..b9c7f028cd 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -110,6 +110,8 @@ pub struct App { pub msg_rx: mpsc::UnboundedReceiver, pub log_scroll: usize, pub log_follow: bool, + /// Viewport height written by the draw function so scroll_keys can clamp correctly. + pub log_viewport_height: std::cell::Cell, pub all_logs: Arc>>, /// Interleaved stdout/stderr for headless mode; preserves ordering under load. pub headless_log: Arc>>, @@ -141,6 +143,7 @@ impl App { msg_rx, log_scroll: 0, log_follow: true, + log_viewport_height: std::cell::Cell::new(0), all_logs: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), headless_log: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), show_log_panel: true, diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs index d56c6e9641..4d6490b96e 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -189,27 +189,29 @@ pub fn handle_all_logs_key(app: &mut App, key: KeyCode) -> bool { /// Shared scroll key handling for both log views. fn scroll_keys(app: &mut App, key: KeyCode, log_len: usize) { + let vh = app.log_viewport_height.get(); + let max_scroll = log_len.saturating_sub(vh.max(1)); match key { KeyCode::Down | KeyCode::Char('j') => { - let next = (app.log_scroll + 1).min(log_len.saturating_sub(1)); + let next = (app.log_scroll + 1).min(max_scroll); app.log_scroll = next; - app.log_follow = next >= log_len.saturating_sub(1); + app.log_follow = next >= max_scroll; } KeyCode::Up | KeyCode::Char('k') => { app.log_scroll = app.log_scroll.saturating_sub(1); app.log_follow = false; } KeyCode::PageDown => { - let next = (app.log_scroll + 20).min(log_len.saturating_sub(1)); + let next = (app.log_scroll + 20).min(max_scroll); app.log_scroll = next; - app.log_follow = next >= log_len.saturating_sub(1); + app.log_follow = next >= max_scroll; } KeyCode::PageUp => { app.log_scroll = app.log_scroll.saturating_sub(20); app.log_follow = false; } KeyCode::Char('G') | KeyCode::Char('f') => { - app.log_scroll = log_len.saturating_sub(1); + app.log_scroll = max_scroll; app.log_follow = true; } KeyCode::Char('g') => { diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index a8ec6204f1..999f73739b 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -477,6 +477,7 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { ); let log_height = chunks[1].height.saturating_sub(2) as usize; // inner height (minus borders) + app.log_viewport_height.set(log_height); let (lines, total, scroll) = { let logs = comp.logs.lock().unwrap(); let total = logs.len(); @@ -501,7 +502,7 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { log_area, ); - let mut scrollbar_state = ScrollbarState::new(total).position(scroll); + let mut scrollbar_state = ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); f.render_stateful_widget( Scrollbar::new(ScrollbarOrientation::VerticalRight), log_area, @@ -531,6 +532,7 @@ pub fn draw_all_logs(f: &mut Frame, app: &App) { .split(area); let log_height = chunks[0].height.saturating_sub(2) as usize; + app.log_viewport_height.set(log_height); let (lines, total, scroll) = { let logs = app.all_logs.lock().unwrap(); let total = logs.len(); @@ -570,7 +572,7 @@ pub fn draw_all_logs(f: &mut Frame, app: &App) { log_area, ); - let mut scrollbar_state = ScrollbarState::new(total).position(scroll); + let mut scrollbar_state = ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); f.render_stateful_widget( Scrollbar::new(ScrollbarOrientation::VerticalRight), log_area, From 056649910ce9cf0955e0dad538402445865c7a42 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Fri, 5 Jun 2026 19:06:29 +0200 Subject: [PATCH 31/48] Remove unused config_focus_items method Dead code since config_focus_next/prev were rewritten to be row-aware. Co-Authored-By: Claude Sonnet 4.6 --- src/bitbots_misc/bitbots_bringup/tui/src/app.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index b9c7f028cd..7d1666d9dc 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -200,20 +200,6 @@ impl App { .collect() } - pub fn config_focus_items(&self) -> Vec { - let mut items = vec![ - ConfigFocus::Zenoh, - ConfigFocus::Sim, - ConfigFocus::Fieldname, - ConfigFocus::DsdFile, - ]; - for i in 0..self.toggleable_indices().len() { - items.push(ConfigFocus::Component(i)); - } - items.push(ConfigFocus::Start); - items - } - /// Down: flags row → first component; within a column move down one row; Start → flags. pub fn config_focus_next(&mut self) { let n = self.toggleable_indices().len(); From 606bb3271099a41beb0fbb6de2540011f7f03304 Mon Sep 17 00:00:00 2001 From: Florian Vahl <7vahl@informatik.uni-hamburg.de> Date: Fri, 5 Jun 2026 19:13:30 +0200 Subject: [PATCH 32/48] Move rust to base pixi env; enable ruff-format auto-fix; TUI improvements pixi.toml: move rust >=1.88 from feature.ros to base dependencies so cargo is available in all environments (format, robot, etc.). .pre-commit-config.yaml: remove --diff from ruff-format so it fixes files in place instead of just reporting differences. TUI: row-aware config navigation, AllLogs screen, scrollbar fixes, confirm dialogs, sidebar Left/Right toggle, lowlevel double-launch fix. Co-Authored-By: Claude Sonnet 4.6 --- .pre-commit-config.yaml | 2 - pixi.lock | 107 ++++++++++++++++++ pixi.toml | 2 +- .../bitbots_bringup/tui/src/app.rs | 70 +++++++++--- .../bitbots_bringup/tui/src/components.rs | 22 ++-- .../bitbots_bringup/tui/src/input.rs | 9 +- .../bitbots_bringup/tui/src/main.rs | 20 ++-- .../bitbots_bringup/tui/src/ui.rs | 80 +++++++++---- .../bitbots_rl_walk/bitbots_rl_walk/walk.py | 2 +- .../bitbots_team_communication.py | 1 + 10 files changed, 250 insertions(+), 65 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8deb8cf02f..a71b34d530 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,8 +14,6 @@ repos: - "--exit-non-zero-on-fix" - "--show-fixes" - id: ruff-format - args: - - "--diff" - repo: https://github.com/pocc/pre-commit-hooks rev: v1.3.5 hooks: diff --git a/pixi.lock b/pixi.lock index 388f57fe47..199fa998a0 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1995,11 +1995,13 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda @@ -2013,6 +2015,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda @@ -2025,6 +2028,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda @@ -2039,6 +2043,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda @@ -2046,7 +2053,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.3.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.3-pyhcf101f3_0.conda @@ -2054,11 +2063,13 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda @@ -2071,6 +2082,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda @@ -2083,6 +2095,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda @@ -2097,6 +2110,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda @@ -2104,7 +2120,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.3.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.3-pyhcf101f3_0.conda @@ -5255,6 +5273,22 @@ packages: purls: [] size: 77667192 timestamp: 1778268558509 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda + sha256: 2c0b2870210cfc7e8561676844f4bd3884b345c19100e1da84cbfb4994d8f104 + md5: 1c2eddf7501ef92050d3fbb11df61ee3 + depends: + - binutils_impl_linux-64 >=2.45 + - libgcc >=15.2.0 + - libgcc-devel_linux-64 15.2.0 hcc6f6b0_119 + - libgomp >=15.2.0 + - libsanitizer 15.2.0 h90f66d4_19 + - libstdcxx >=15.2.0 + - libstdcxx-devel_linux-64 15.2.0 hd446a21_119 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 81043749 + timestamp: 1778860073982 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_25.conda sha256: 95d22db25f0b8875febe63073f809c0c64f4026cc9e6aa0cca7130de51e4d044 md5: 0a9089d9eeeeb23313a9ce670fb89052 @@ -7455,6 +7489,17 @@ packages: purls: [] size: 7947790 timestamp: 1778268494844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda + sha256: 7a58892a52739ce4c0f7109de9e91b4353104748eb04fc6441d88e8af444ba99 + md5: 67eef12ce33f7ff99900c212d7076fc2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.2.0 + - libstdcxx >=15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 7930689 + timestamp: 1778269054623 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda sha256: 41a56a57a0bb78429a5ad571226dbe4cffed586446d11ad30cc4173f89c1cee8 md5: 6dc0e6dc04a710e77bfe2865dad3f3b8 @@ -11441,6 +11486,22 @@ packages: purls: [] size: 68567347 timestamp: 1778268606528 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda + sha256: 1939c6f91d5281ee95df88c5a3aaa4887b20aa681f7387c346170ebe3270da0f + md5: 953452bf071280fa4e6c73c41de5210b + depends: + - binutils_impl_linux-aarch64 >=2.45 + - libgcc >=15.2.0 + - libgcc-devel_linux-aarch64 15.2.0 h55c397f_119 + - libgomp >=15.2.0 + - libsanitizer 15.2.0 he19c465_19 + - libstdcxx >=15.2.0 + - libstdcxx-devel_linux-aarch64 15.2.0 ha7b1723_119 + - sysroot_linux-aarch64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 73693226 + timestamp: 1778860139481 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_25.conda sha256: e52a4dc150e9bebefd7aa42147e64f3bb1e05c86128013156867e0f50c793161 md5: 37f51721bc9aee83218fbe356a65a5c6 @@ -13454,6 +13515,16 @@ packages: purls: [] size: 7199495 timestamp: 1778268550110 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda + sha256: 8115604f113fe2b7be95b2d22183a4dda5779c1cc6db4b826af800581498b4b3 + md5: 95210a1edbd7fc6e12afc9f8276f450a + depends: + - libgcc >=15.2.0 + - libstdcxx >=15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 7067965 + timestamp: 1778268796086 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda sha256: 0ac75f115584bb5b7783c1c94b46966251095f03467c5687b38aaaf60d8db7dc md5: b74a8a2efd31f3426aaff959759f6320 @@ -17319,6 +17390,15 @@ packages: purls: [] size: 3091520 timestamp: 1778268364856 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda + sha256: 38a557eba305468ac1f90ac85e50d8defd76141cb0b8a43b2fc1aca71dd5d5f2 + md5: 683fcb168e1df9a21fa80d5aa2d9330b + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3095909 + timestamp: 1778268932148 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda sha256: e06d098cd33eac577b9c994a47243de5439ca8fd9ff6e790723fbfdc3d61a76c md5: 970ca6cb337de6a7bccfaaa344e9863b @@ -17329,6 +17409,15 @@ packages: purls: [] size: 2346647 timestamp: 1778268433769 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda + sha256: fe600a63a39281e6994e27fe79360cd6bd8e576c3ce1af32ce8673b011f46c21 + md5: 18ad0f0b94071d91fa962a1bf3983a78 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 2353893 + timestamp: 1778268665954 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda sha256: 1b4263aa5d8c8c659e8e38b66868f42867347e0c8941513ee77269afc00a5186 md5: d1a866495b9654ccfef5392b8541dc58 @@ -17339,6 +17428,15 @@ packages: purls: [] size: 20199810 timestamp: 1778268389428 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda + sha256: a2385f3611d5cd25378f9cf2367183320731709c067ddd08d43330d3170f15b8 + md5: bcfe7eae40158c3e355d2f9d3ed41230 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 20765069 + timestamp: 1778268963689 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda sha256: 918ae042d508617da3c06fb55332f1280340eb705a69a0b1d14fa6fddb790145 md5: 8c7bc9930a1b7c38557311fbea9a433f @@ -17349,6 +17447,15 @@ packages: purls: [] size: 17587589 timestamp: 1778268454520 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda + sha256: 6f7ceee16070781b7d642a37a35ffdf09c66796d3df105c919526210ce220443 + md5: 61da34d67f58dd4cf16683f6cdcb06c8 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 17627362 + timestamp: 1778268687968 - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda sha256: e4a07f357a4cf195a2345dabd98deab80f4d53574abe712a9cc7f22d3f2cc2c3 md5: 49647ac1de4d1e4b49124aedf3934e02 diff --git a/pixi.toml b/pixi.toml index 12350c18bb..b152f230a5 100644 --- a/pixi.toml +++ b/pixi.toml @@ -38,6 +38,7 @@ cmd = "colcon test --parallel-workers 1 --event-handlers console_direct+ --retur [dependencies] # Base dependencies python = "==3.12" +rust = ">=1.88" # Patches readline = ">=8.2.999" # This is needed because we want to install an empty readline package from our models channel that leads to the system version being used. Otherwise we might have a mismatch between bash (often accessed globally ignoring the env) and readline (provided by the env) breaking everything. @@ -46,7 +47,6 @@ readline = ">=8.2.999" # This is needed because we want to install an empty rea # Misc dependencies for our ROS 2 packages alsa-plugins = ">=1.2.12,<2" clang = ">=21.1.0,<22" # Needed for r2r rust bindings generation -rust = ">=1.88" beartype = ">=0.22.6,<0.23" breathe = ">=4.36.0,<5" cbor2 = ">=5.9.0,<6" diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs index 7d1666d9dc..f8de3cc3a8 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -126,7 +126,14 @@ impl App { .iter() .enumerate() .map(|(i, def)| { - ComponentState::new(i, if def.sim_component { false } else { def.default_enabled }) + ComponentState::new( + i, + if def.sim_component { + false + } else { + def.default_enabled + }, + ) }) .collect(); @@ -206,16 +213,31 @@ impl App { let left_count = (n + 1) / 2; self.config_focus = match self.config_focus.clone() { // Flags row: jump straight into the component grid - ConfigFocus::Zenoh | ConfigFocus::Sim | ConfigFocus::Fieldname | ConfigFocus::DsdFile => { - if n > 0 { ConfigFocus::Component(0) } else { ConfigFocus::Start } + ConfigFocus::Zenoh + | ConfigFocus::Sim + | ConfigFocus::Fieldname + | ConfigFocus::DsdFile => { + if n > 0 { + ConfigFocus::Component(0) + } else { + ConfigFocus::Start + } } // Left column: move down or fall through to Start ConfigFocus::Component(i) if i < left_count => { - if i + 1 < left_count { ConfigFocus::Component(i + 1) } else { ConfigFocus::Start } + if i + 1 < left_count { + ConfigFocus::Component(i + 1) + } else { + ConfigFocus::Start + } } // Right column: move down or fall through to Start ConfigFocus::Component(i) => { - if i + 1 < n { ConfigFocus::Component(i + 1) } else { ConfigFocus::Start } + if i + 1 < n { + ConfigFocus::Component(i + 1) + } else { + ConfigFocus::Start + } } // Start wraps back to flags ConfigFocus::Start => ConfigFocus::Zenoh, @@ -228,9 +250,10 @@ impl App { let left_count = (n + 1) / 2; self.config_focus = match self.config_focus.clone() { // Flags row wraps to Start - ConfigFocus::Zenoh | ConfigFocus::Sim | ConfigFocus::Fieldname | ConfigFocus::DsdFile => { - ConfigFocus::Start - } + ConfigFocus::Zenoh + | ConfigFocus::Sim + | ConfigFocus::Fieldname + | ConfigFocus::DsdFile => ConfigFocus::Start, // Top of left column → back to flags (left side) ConfigFocus::Component(0) => ConfigFocus::Zenoh, // Top of right column → back to flags (right side) @@ -239,7 +262,11 @@ impl App { ConfigFocus::Component(i) => ConfigFocus::Component(i - 1), // Start → bottom of whichever column is longer ConfigFocus::Start => { - if n > 0 { ConfigFocus::Component(n - 1) } else { ConfigFocus::Zenoh } + if n > 0 { + ConfigFocus::Component(n - 1) + } else { + ConfigFocus::Zenoh + } } }; } @@ -300,8 +327,12 @@ impl App { self.components[i].enabled = !sim && def.default_enabled; } } - self.config_fieldname_input = - if sim { FIELDNAME_DEFAULT_SIM } else { FIELDNAME_DEFAULT_HW }.to_string(); + self.config_fieldname_input = if sim { + FIELDNAME_DEFAULT_SIM + } else { + FIELDNAME_DEFAULT_HW + } + .to_string(); self.params.fieldname = self.config_fieldname_input.clone(); self.config_focus = ConfigFocus::Zenoh; } @@ -341,7 +372,10 @@ impl App { Err(e) => { let entry = format!("[ERROR] spawn failed: {e}"); logs.lock().unwrap().push_back(entry.clone()); - all_logs.lock().unwrap().push_back(format!("[{comp_name}] {entry}")); + all_logs + .lock() + .unwrap() + .push_back(format!("[{comp_name}] {entry}")); let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); return; } @@ -373,18 +407,24 @@ impl App { let tui_entry = format!("{}{}", tui_prefix, raw); { let mut l = logs.lock().unwrap(); - if l.len() >= 2000 { l.pop_front(); } + if l.len() >= 2000 { + l.pop_front(); + } l.push_back(tui_entry.clone()); } { let mut l = all_logs.lock().unwrap(); - if l.len() >= 5000 { l.pop_front(); } + if l.len() >= 5000 { + l.pop_front(); + } l.push_back(format!("[{comp_name}] {tui_entry}")); } { let tagged = format!("[{comp_name}] {raw}"); let mut l = headless_log.lock().unwrap(); - if l.len() >= 5000 { l.pop_front(); } + if l.len() >= 5000 { + l.pop_front(); + } l.push_back(if is_stderr { HeadlessLine::Stderr(tagged) } else { diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs index b53ec6d8c5..e2d71463ae 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs @@ -40,23 +40,13 @@ pub struct ComponentDef { // ─── Command helpers ────────────────────────────────────────────────────────── pub fn ros2_launch(pkg: &str, file: &str, extra: &[&str]) -> Vec { - let mut v = vec![ - "ros2".into(), - "launch".into(), - pkg.into(), - file.into(), - ]; + let mut v = vec!["ros2".into(), "launch".into(), pkg.into(), file.into()]; v.extend(extra.iter().map(|s| s.to_string())); v } pub fn ros2_run(pkg: &str, exec: &str, extra: &[&str]) -> Vec { - let mut v = vec![ - "ros2".into(), - "run".into(), - pkg.into(), - exec.into(), - ]; + let mut v = vec!["ros2".into(), "run".into(), pkg.into(), exec.into()]; v.extend(extra.iter().map(|s| s.to_string())); v } @@ -149,7 +139,13 @@ pub static COMPONENT_DEFS: &[ComponentDef] = &[ infrastructure: false, hardware_only: false, sim_component: false, - cmds: |p| vec![ros2_launch("bitbots_bringup", "motion.launch", &[&sim(p), "lowlevel:=false"])], + cmds: |p| { + vec![ros2_launch( + "bitbots_bringup", + "motion.launch", + &[&sim(p), "lowlevel:=false"], + )] + }, }, ComponentDef { name: "Game Controller", diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs index 4d6490b96e..68fca2989f 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -1,6 +1,6 @@ use crossterm::event::{KeyCode, KeyModifiers}; -use crate::app::{App, ConfirmAction, ConfigFocus, ProcState, Screen}; +use crate::app::{App, ConfigFocus, ConfirmAction, ProcState, Screen}; use crate::components::COMPONENT_DEFS; pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { @@ -123,7 +123,12 @@ pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModi KeyCode::Char('l') => { if let Some(idx) = comp_idx { - app.log_scroll = app.components[idx].logs.lock().unwrap().len().saturating_sub(1); + app.log_scroll = app.components[idx] + .logs + .lock() + .unwrap() + .len() + .saturating_sub(1); app.log_follow = true; app.screen = Screen::Logs(idx); } diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs index 47ad604379..da717905d4 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -66,22 +66,14 @@ fn setup_panic_hook() { let original = std::panic::take_hook(); std::panic::set_hook(Box::new(move |info| { let _ = disable_raw_mode(); - let _ = execute!( - std::io::stdout(), - LeaveAlternateScreen, - DisableMouseCapture - ); + let _ = execute!(std::io::stdout(), LeaveAlternateScreen, DisableMouseCapture); original(info); })); } fn cleanup_terminal() { let _ = disable_raw_mode(); - let _ = execute!( - std::io::stdout(), - LeaveAlternateScreen, - DisableMouseCapture - ); + let _ = execute!(std::io::stdout(), LeaveAlternateScreen, DisableMouseCapture); } // ─── Entry point ────────────────────────────────────────────────────────────── @@ -112,7 +104,13 @@ async fn main() -> Result<()> { let mut event_stream = EventStream::new(); let mut tick_interval = time::interval(Duration::from_millis(100)); - let r = run_tui(&mut terminal, &mut app, &mut event_stream, &mut tick_interval).await; + let r = run_tui( + &mut terminal, + &mut app, + &mut event_stream, + &mut tick_interval, + ) + .await; cleanup_terminal(); r }; diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs index 999f73739b..514db5c7f1 100644 --- a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -2,11 +2,13 @@ use ratatui::{ layout::{Alignment, Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, text::{Line, Span}, - widgets::{Block, Borders, Clear, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, Wrap}, + widgets::{ + Block, Borders, Clear, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, Wrap, + }, Frame, }; -use crate::app::{App, ConfirmAction, ConfigFocus, ProcState, Screen}; +use crate::app::{App, ConfigFocus, ConfirmAction, ProcState, Screen}; use crate::components::COMPONENT_DEFS; // ─── Banner ─────────────────────────────────────────────────────────────────── @@ -122,13 +124,17 @@ fn draw_config_flags(f: &mut Frame, app: &App, area: Rect) { let dsd_focused = app.config_focus == ConfigFocus::DsdFile; f.render_widget( - Paragraph::new(if app.params.zenoh { "[✓] Zenoh" } else { "[ ] Zenoh" }) - .block( - Block::default() - .borders(Borders::ALL) - .border_style(focus_border(zenoh_focused)), - ) - .style(focus_text(zenoh_focused)), + Paragraph::new(if app.params.zenoh { + "[✓] Zenoh" + } else { + "[ ] Zenoh" + }) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(focus_border(zenoh_focused)), + ) + .style(focus_text(zenoh_focused)), chunks[0], ); @@ -264,7 +270,11 @@ pub fn draw_runtime(f: &mut Frame, app: &App) { let area = f.area(); let chunks = Layout::default() .direction(Direction::Vertical) - .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) + .constraints([ + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(1), + ]) .split(area); draw_runtime_header(f, app, chunks[0]); @@ -304,7 +314,11 @@ fn draw_runtime_header(f: &mut Frame, app: &App, area: Rect) { " Bit-Bots Teamplayer [{running}/{total_enabled} running]{sim_badge}" )) .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)), + .style( + Style::default() + .fg(Color::Cyan) + .add_modifier(Modifier::BOLD), + ), area, ); } @@ -425,7 +439,9 @@ fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { let mut spans: Vec> = vec![ Span::styled( tag.to_owned(), - Style::default().fg(tag_color(tag)).add_modifier(Modifier::BOLD), + Style::default() + .fg(tag_color(tag)) + .add_modifier(Modifier::BOLD), ), Span::raw(" "), ]; @@ -443,7 +459,12 @@ fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { .iter() .map(|l| { let chars: usize = l.spans.iter().map(|s| s.content.chars().count()).sum(); - if inner_w > 0 { (chars + inner_w - 1) / inner_w } else { 1 }.max(1) + if inner_w > 0 { + (chars + inner_w - 1) / inner_w + } else { + 1 + } + .max(1) }) .sum(); let scroll = total_rows.saturating_sub(inner_h) as u16; @@ -466,13 +487,21 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { let chunks = Layout::default() .direction(Direction::Vertical) - .constraints([Constraint::Length(3), Constraint::Min(0), Constraint::Length(1)]) + .constraints([ + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(1), + ]) .split(area); f.render_widget( Paragraph::new(format!(" Logs: {name} ")) .block(Block::default().borders(Borders::ALL)) - .style(Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD)), + .style( + Style::default() + .fg(Color::Cyan) + .add_modifier(Modifier::BOLD), + ), chunks[0], ); @@ -502,7 +531,8 @@ pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { log_area, ); - let mut scrollbar_state = ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); + let mut scrollbar_state = + ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); f.render_stateful_widget( Scrollbar::new(ScrollbarOrientation::VerticalRight), log_area, @@ -549,7 +579,9 @@ pub fn draw_all_logs(f: &mut Frame, app: &App) { let mut spans: Vec> = vec![ Span::styled( tag.to_owned(), - Style::default().fg(tag_color(tag)).add_modifier(Modifier::BOLD), + Style::default() + .fg(tag_color(tag)) + .add_modifier(Modifier::BOLD), ), Span::raw(" "), ]; @@ -572,7 +604,8 @@ pub fn draw_all_logs(f: &mut Frame, app: &App) { log_area, ); - let mut scrollbar_state = ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); + let mut scrollbar_state = + ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); f.render_stateful_widget( Scrollbar::new(ScrollbarOrientation::VerticalRight), log_area, @@ -596,7 +629,10 @@ pub fn draw_all_logs(f: &mut Frame, app: &App) { pub fn draw_confirm_popup(f: &mut Frame, app: &App) { let (title, msg) = match &app.confirm_action { - Some(ConfirmAction::Quit) => (" Exit ", "Exit teamplayer?\nAll running components will be stopped."), + Some(ConfirmAction::Quit) => ( + " Exit ", + "Exit teamplayer?\nAll running components will be stopped.", + ), Some(ConfirmAction::StopAll) => (" Stop All ", "Stop all running components?"), None => return, }; @@ -619,7 +655,11 @@ pub fn draw_confirm_popup(f: &mut Frame, app: &App) { .title(title) .border_style(Style::default().fg(Color::Yellow)), ) - .style(Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD)) + .style( + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD), + ) .alignment(Alignment::Center), popup_area, ); diff --git a/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py b/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py index 3091b1bccc..8b514905ad 100644 --- a/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py +++ b/src/bitbots_motion/bitbots_rl_walk/bitbots_rl_walk/walk.py @@ -20,8 +20,8 @@ import numpy as np import onnxruntime as rt from ament_index_python import get_package_share_directory -from rclpy.experimental.events_executor import EventsExecutor from geometry_msgs.msg import Twist +from rclpy.experimental.events_executor import EventsExecutor from rclpy.node import Node from sensor_msgs.msg import Imu, JointState from transforms3d.euler import euler2mat diff --git a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py index 41c9d069c7..69ef552ce2 100755 --- a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py +++ b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py @@ -320,5 +320,6 @@ def main(): except KeyboardInterrupt: pass + if __name__ == "__main__": main() From 094f89af3f7f195af54f1ac9716b66bb6fbda0a9 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 02:53:58 +0200 Subject: [PATCH 33/48] Add bitbots_cargo foundation: Cargo workspace, bitbots_global_planner rename, Rust migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add bitbots_cargo cmake package with r2r_cargo(), cargo_pyo3_extension(), cargo_binary() helpers - Set up root Cargo workspace covering bitbots_extrinsic_calibration and bitbots_global_planner - Rename bitbots_rust_nav → bitbots_global_planner; remove stale pixi-build files - Bring PolygonObstacle/AnyObstacle and goal obstacle support into bitbots_global_planner - Migrate bitbots_extrinsic_calibration from C++ to Rust using bitbots_cargo - Add rust and clang to pixi deps; route cargo target into build/ via CARGO_TARGET_DIR activation env - Add cargo fmt pre-commit hook and rust-analyzer vscode settings - Update bitbots_path_planning import to use new bitbots_global_planner module name --- .pre-commit-config.yaml | 7 + .vscode/settings.json | 22 + Cargo.toml | 14 + pixi.lock | 4173 ++++------------- pixi.toml | 9 +- src/bitbots_misc/bitbots_cargo/CMakeLists.txt | 6 + .../cmake/bitbots_cargo.cmake.in | 201 + src/bitbots_misc/bitbots_cargo/package.xml | 19 + .../CMakeLists.txt | 66 +- .../bitbots_extrinsic_calibration/Cargo.toml | 11 + .../launch/calibration.launch | 4 +- .../bitbots_extrinsic_calibration/package.xml | 12 +- .../src/extrinsic_calibration.cpp | 84 - .../bitbots_extrinsic_calibration/src/main.rs | 95 + .../bitbots_global_planner/CMakeLists.txt | 9 + .../bitbots_global_planner/Cargo.toml | 23 + .../bitbots_global_planner/README.md | 25 + .../bitbots_global_planner/package.xml | 20 + .../bitbots_global_planner/src/bin.rs | 165 + .../bitbots_global_planner/src/lib.rs | 17 + .../bitbots_global_planner/src/map.rs | 84 + .../bitbots_global_planner/src/obstacle.rs | 201 + .../bitbots_global_planner/src/planner.rs | 167 + .../bitbots_path_planning/planner.py | 2 +- .../bitbots_rust_nav/pixi.toml | 11 - .../bitbots_rust_nav/pyproject.toml | 16 - 26 files changed, 2032 insertions(+), 3431 deletions(-) create mode 100644 Cargo.toml create mode 100644 src/bitbots_misc/bitbots_cargo/CMakeLists.txt create mode 100644 src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in create mode 100644 src/bitbots_misc/bitbots_cargo/package.xml create mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml delete mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp create mode 100644 src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs create mode 100644 src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt create mode 100644 src/bitbots_navigation/bitbots_global_planner/Cargo.toml create mode 100644 src/bitbots_navigation/bitbots_global_planner/README.md create mode 100644 src/bitbots_navigation/bitbots_global_planner/package.xml create mode 100644 src/bitbots_navigation/bitbots_global_planner/src/bin.rs create mode 100644 src/bitbots_navigation/bitbots_global_planner/src/lib.rs create mode 100644 src/bitbots_navigation/bitbots_global_planner/src/map.rs create mode 100644 src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs create mode 100644 src/bitbots_navigation/bitbots_global_planner/src/planner.rs delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/pixi.toml delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/pyproject.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 289c68abf4..bfb097865a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -50,3 +50,10 @@ repos: - id: check-xml - id: check-yaml - id: detect-private-key + - repo: local + hooks: + - id: cargo-fmt + name: cargo fmt + entry: cargo fmt + language: system + pass_filenames: false diff --git a/.vscode/settings.json b/.vscode/settings.json index a1517b8b16..80c4d409e3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -318,6 +318,28 @@ "[jsonc]": { "editor.defaultFormatter": "vscode.json-language-features" }, + "rust-analyzer.check.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], + "rust-analyzer.cargo.buildScripts.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], "search.exclude": { "build": true, "install": true, diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..43e0f2463a --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,14 @@ +[workspace] +members = [ + "src/bitbots_misc/bitbots_extrinsic_calibration", + "src/bitbots_navigation/bitbots_global_planner" +] + +# Optional but recommended for modern Cargo +resolver = "2" + +# We use a custom profile to keep colcon +# separate from "normal" rust building. +[profile.colcon] +inherits = "release" +debug = true diff --git a/pixi.lock b/pixi.lock index b7ef784478..b9f2e5af09 100644 --- a/pixi.lock +++ b/pixi.lock @@ -25,7 +25,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/adwaita-icon-theme-3.38.0-hbf89446_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-plugins-1.2.12-h989ed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/assimp-5.4.3-hecf2907_1.conda @@ -33,7 +33,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py312h90b7ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/benchmark-1.9.5-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda @@ -51,21 +51,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.3-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.1-py312ha4b625e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda @@ -76,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-3.4.0.100-h3bcb7cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fcl-0.7.0-h543440a_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_h43fde53_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.11-nompi_h3b011a4_100.conda @@ -91,15 +95,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-h76987e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h8bb2d51_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.54.0-pl5321h6d3cee1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda @@ -118,9 +122,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-h72ca5df_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-7.5.2-h5bbc156_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-python-7.5.2-py312h89d136e_2.conda @@ -141,7 +145,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda @@ -150,7 +154,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.7-gpl_hc2c16d8_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda @@ -169,10 +173,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h99862b1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h746c552_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.7-default_h99862b1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.7-default_h746c552_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -180,7 +185,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda @@ -214,7 +219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.7-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda @@ -248,7 +253,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-hfb7daa7_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h75b3fb1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda @@ -270,7 +274,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liburcu-0.14.0-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda @@ -287,6 +291,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda @@ -295,11 +300,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312h1c5ec97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312hd9148b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-3.6.0-h1eba5cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-python-3.6.0-np2py312h2fcff2b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-samples-3.6.0-h3c404ae_0.conda @@ -319,10 +324,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.12-h9f1635d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.27.4-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda @@ -368,6 +373,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rsync-3.4.4-h5440a77_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda @@ -398,7 +404,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda @@ -407,7 +413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda @@ -455,22 +461,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.29-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-metadata-0.2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-information-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-selection-0.2.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-parallel-executor-0.4.0-pyhe01879c_0.conda @@ -483,11 +489,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda @@ -496,7 +504,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -510,16 +518,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.17-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda @@ -529,7 +537,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda @@ -580,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda @@ -589,6 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -604,7 +613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda @@ -615,7 +624,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.1-pyhd8ed1ab_0.conda @@ -1003,7 +1012,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[befee43b] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl @@ -1014,13 +1022,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d8/19/e45765fa26388f42e22af2fc27f06e78e1da56d4211f883f6f8ddaac7646/syrupy-5.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adwaita-icon-theme-3.38.0-h2d234d2_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-plugins-1.2.12-haf9f4a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/assimp-5.4.3-he8c3857_1.conda @@ -1028,7 +1036,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/at-spi2-core-2.40.3-h1f2db35_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.2-he30d5cf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.6.0-py312ha46dd1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.5.0-py312ha46dd1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/benchmark-1.9.5-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda @@ -1046,21 +1054,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py312hf18b547_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.3-py312hd077ced_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.1-py312hd077ced_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppzmq-4.11.0-h7be3492_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-48.0.1-py312h96535df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda @@ -1071,7 +1083,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-abi-3.4.0.100-h9a8c16c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/elfutils-0.194-h7d8af26_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/epoxy-1.5.10-he30d5cf_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fcl-0.7.0-h841ecf2_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_hd1a4c92_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fftw-3.3.11-nompi_h66d8d02_100.conda @@ -1086,15 +1098,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.3-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h24a549f_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.6-h90308e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha384071_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h495b507_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.54.0-pl5321h5dcfaa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda @@ -1113,9 +1125,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha384071_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h73dd529_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-7.5.2-h1ad700d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-python-7.5.2-py312h9452373_2.conda @@ -1134,7 +1146,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-h2fb54aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda @@ -1142,7 +1154,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.7-gpl_hbe7d12b_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda @@ -1161,10 +1173,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h2a92e99_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h3185f35_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.7-default_h2a92e99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.7-default_h3185f35_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -1172,7 +1185,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-devel-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_1.conda @@ -1206,7 +1219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.8-hfd2ba90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.7-hfd2ba90_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libltdl-2.4.3a-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda @@ -1238,7 +1251,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.4-hccacd55_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.31.1-h61c7711_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-h50d7eb4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda @@ -1260,7 +1272,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburcu-0.14.0-h0a1ffab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.14-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.29-h06eaf92_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.15.2-hfae3067_0.conda @@ -1275,6 +1287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda @@ -1283,11 +1296,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h982a919_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.9-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.9-py312h9d0c5ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h4f740d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py312h4f740d2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-python-3.6.0-np2py312h7d9f038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-samples-3.6.0-h21f88d6_0.conda @@ -1305,10 +1318,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.12-hda3a014_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h0564a2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.27.4-h55827e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda @@ -1354,6 +1367,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rsync-3.4.4-h3aee46b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda @@ -1384,7 +1398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.1-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda @@ -1393,7 +1407,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.48-h80f16a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda @@ -1441,22 +1455,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.29-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-metadata-0.2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-information-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-selection-0.2.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-parallel-executor-0.4.0-pyhe01879c_0.conda @@ -1469,11 +1483,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda @@ -1482,7 +1498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -1496,16 +1512,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.17-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda @@ -1515,7 +1531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda @@ -1567,7 +1583,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda @@ -1576,6 +1592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -1591,7 +1608,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda @@ -1603,7 +1620,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda @@ -1990,7 +2007,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[bc6fbff1] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl @@ -2001,8 +2017,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/d8/19/e45765fa26388f42e22af2fc27f06e78e1da56d4211f883f6f8ddaac7646/syrupy-5.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl format: channels: - url: https://data.bit-bots.de/conda-misc/output/ @@ -2011,15 +2027,17 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda @@ -2029,10 +2047,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda @@ -2042,6 +2061,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda @@ -2050,36 +2070,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda @@ -2089,10 +2116,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.2-h10b116e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h869d058_0.conda @@ -2102,6 +2130,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.1-h43d1f9e_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda @@ -2110,23 +2139,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda robot: @@ -2141,7 +2175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/adwaita-icon-theme-3.38.0-hbf89446_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-plugins-1.2.12-h989ed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/assimp-5.4.3-hecf2907_1.conda @@ -2149,7 +2183,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py312h90b7ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/benchmark-1.9.5-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda @@ -2167,21 +2201,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.3-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.1-py312ha4b625e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda @@ -2192,7 +2230,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-3.4.0.100-h3bcb7cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fcl-0.7.0-h543440a_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_h43fde53_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.11-nompi_h3b011a4_100.conda @@ -2207,16 +2245,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/geographiclib-cpp-2.7-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-h76987e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h8bb2d51_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.54.0-pl5321h6d3cee1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda @@ -2235,9 +2273,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-h72ca5df_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-7.5.2-h5bbc156_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-python-7.5.2-py312h89d136e_2.conda @@ -2258,7 +2296,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda @@ -2267,7 +2305,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.7-gpl_hc2c16d8_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda @@ -2286,10 +2324,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h99862b1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h746c552_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.7-default_h99862b1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.7-default_h746c552_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hcf29cc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -2297,7 +2336,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda @@ -2331,7 +2370,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.7-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda @@ -2365,7 +2404,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-hfb7daa7_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h75b3fb1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda @@ -2387,7 +2425,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liburcu-0.14.0-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda @@ -2404,6 +2442,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda @@ -2412,11 +2451,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312h1c5ec97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312hd9148b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-3.6.0-h1eba5cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-python-3.6.0-np2py312h2fcff2b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-samples-3.6.0-h3c404ae_0.conda @@ -2436,10 +2475,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.12-h9f1635d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.27.4-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda @@ -2485,6 +2524,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rsync-3.4.4-h5440a77_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda @@ -2515,7 +2555,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda @@ -2524,7 +2564,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda @@ -2572,22 +2612,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.29-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-metadata-0.2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-information-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-selection-0.2.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-parallel-executor-0.4.0-pyhe01879c_0.conda @@ -2600,11 +2640,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda @@ -2613,7 +2655,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -2627,16 +2669,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.17-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda @@ -2646,7 +2688,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda @@ -2697,7 +2739,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda @@ -2706,6 +2748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -2721,7 +2764,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda @@ -2732,7 +2775,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.1-pyhd8ed1ab_0.conda @@ -3123,7 +3166,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[befee43b] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl @@ -3134,13 +3176,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d8/19/e45765fa26388f42e22af2fc27f06e78e1da56d4211f883f6f8ddaac7646/syrupy-5.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adwaita-icon-theme-3.38.0-h2d234d2_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-plugins-1.2.12-haf9f4a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/assimp-5.4.3-he8c3857_1.conda @@ -3148,7 +3190,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/at-spi2-core-2.40.3-h1f2db35_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.2-he30d5cf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.6.0-py312ha46dd1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.5.0-py312ha46dd1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/benchmark-1.9.5-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda @@ -3166,21 +3208,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py312hf18b547_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.3-py312hd077ced_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.1-py312hd077ced_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppzmq-4.11.0-h7be3492_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-48.0.1-py312h96535df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda @@ -3191,7 +3237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-abi-3.4.0.100-h9a8c16c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/elfutils-0.194-h7d8af26_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/epoxy-1.5.10-he30d5cf_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fcl-0.7.0-h841ecf2_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_hd1a4c92_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fftw-3.3.11-nompi_h66d8d02_100.conda @@ -3206,16 +3252,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.3-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h24a549f_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.6-h90308e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/geographiclib-cpp-2.7-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha384071_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h495b507_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.54.0-pl5321h5dcfaa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda @@ -3234,9 +3280,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha384071_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h73dd529_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-7.5.2-h1ad700d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-python-7.5.2-py312h9452373_2.conda @@ -3255,7 +3301,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-h2fb54aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda @@ -3263,7 +3309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.7-gpl_hbe7d12b_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda @@ -3282,10 +3328,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h2a92e99_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h3185f35_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.7-default_h2a92e99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.7-default_h3185f35_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.20.0-hc57f145_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -3293,7 +3340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-devel-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_1.conda @@ -3327,7 +3374,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.8-hfd2ba90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.7-hfd2ba90_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libltdl-2.4.3a-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda @@ -3359,7 +3406,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.4-hccacd55_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.31.1-h61c7711_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-h50d7eb4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda @@ -3381,7 +3427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburcu-0.14.0-h0a1ffab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.14-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.29-h06eaf92_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.15.2-hfae3067_0.conda @@ -3396,6 +3442,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda @@ -3404,11 +3451,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h982a919_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.9-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.9-py312h9d0c5ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h4f740d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py312h4f740d2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-python-3.6.0-np2py312h7d9f038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-samples-3.6.0-h21f88d6_0.conda @@ -3426,10 +3473,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.12-hda3a014_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h0564a2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.27.4-h55827e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda @@ -3475,6 +3522,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rsync-3.4.4-h3aee46b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda @@ -3505,7 +3553,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.1-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda @@ -3514,7 +3562,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.48-h80f16a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda @@ -3562,22 +3610,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.29-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-metadata-0.2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-information-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-selection-0.2.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-parallel-executor-0.4.0-pyhe01879c_0.conda @@ -3590,11 +3638,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda @@ -3603,7 +3653,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -3617,16 +3667,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.17-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda @@ -3636,7 +3686,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda @@ -3688,7 +3738,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda @@ -3697,6 +3747,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -3712,7 +3763,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda @@ -3724,7 +3775,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda @@ -4114,7 +4165,6 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2023_04_04_philipp_yoeox_with_team_colors-1.0.1-h4616a5c_3.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[bc6fbff1] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl @@ -4125,8 +4175,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/d8/19/e45765fa26388f42e22af2fc27f06e78e1da56d4211f883f6f8ddaac7646/syrupy-5.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda build_number: 20 @@ -4140,9 +4190,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - _openmp_mutex >=4.5 size: 28948 timestamp: 1770939786096 - conda: https://conda.anaconda.org/conda-forge/linux-64/adwaita-icon-theme-3.38.0-hbf89446_1.tar.bz2 @@ -4154,7 +4201,6 @@ packages: license: LGPL-3.0-or-later OR CC-BY-SA-3.0 license_family: LGPL purls: [] - run_exports: {} size: 11217173 timestamp: 1610488699556 - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda @@ -4177,23 +4223,19 @@ packages: license_family: Apache purls: - pkg:pypi/aiohttp?source=compressed-mapping - run_exports: {} size: 1078273 timestamp: 1780913823270 -- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda - sha256: cf93ca0f1f107e95a35969a4622684e08fcb8cf37f8cf4a1e9e424828386c921 - md5: 8904e09bda369377b3dd07e2ac828c5d +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16-hb03c661_0.conda + sha256: 64484cb7e7cf65d9c7188498d595125a6e0751604dd7fb483e1bb327eec0f738 + md5: 18d273b22e96c97c2017813f099faa82 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: LGPL-2.1-or-later - license_family: LGPL + license_family: GPL purls: [] - run_exports: - weak: - - alsa-lib >=1.2.16.1,<1.3.0a0 - size: 592377 - timestamp: 1781521980743 + size: 591046 + timestamp: 1780398678742 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-plugins-1.2.12-h989ed37_2.conda sha256: 2b0912f8891f367ea8bdf8a8c65f27a09e275df335bfc876b3b973dfa138ff29 md5: 657d4333ff8d0b9f713c94c0e23ee1a8 @@ -4207,7 +4249,6 @@ packages: license: LGPL-2.1-or-later AND GPL-3.0-or-later license_family: LGPL purls: [] - run_exports: {} size: 254302 timestamp: 1756137041656 - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda @@ -4219,9 +4260,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - aom >=3.9.1,<3.10.0a0 size: 2706396 timestamp: 1718551242397 - conda: https://conda.anaconda.org/conda-forge/linux-64/assimp-5.4.3-hecf2907_1.conda @@ -4237,9 +4275,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - assimp >=5.4.3,<5.4.4.0a0 size: 3645199 timestamp: 1753274588181 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -4254,9 +4289,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - at-spi2-atk >=2.38.0,<3.0a0 size: 339899 timestamp: 1619122953439 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 @@ -4272,9 +4304,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - at-spi2-core >=2.40.3,<2.41.0a0 size: 658390 timestamp: 1625848454791 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda @@ -4289,9 +4318,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - atk-1.0 >=2.38.0 size: 355900 timestamp: 1713896169874 - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-hb03c661_1.conda @@ -4304,26 +4330,22 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libattr >=2.5.2,<2.6.0a0 size: 31386 timestamp: 1773595914754 -- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py312h90b7ffd_0.conda - sha256: 95b3d6d44c17c4061db703289f39915646e455f75f0c8c9d949bf081d2e61579 - md5: 55811da425538da800b89c0c588652fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda + sha256: a2b08a4e5e549b5f67c38edffd175437e2208547a7e67b5fa5373b67ef419e50 + md5: b31dba71fe091e7201826e57e0f7b261 depends: - python - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - python_abi 3.12.* *_cp312 - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause AND MIT AND EPL-2.0 purls: - pkg:pypi/backports-zstd?source=compressed-mapping - run_exports: {} - size: 239892 - timestamp: 1781450817988 + size: 239928 + timestamp: 1778594049826 - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda sha256: 22020286e3d27eba7c9efef79c1020782885992aea0e7d28d7274c4405001521 md5: 8fbbd949c452efde5a75b62b22a88938 @@ -4338,7 +4360,6 @@ packages: license_family: APACHE purls: - pkg:pypi/bcrypt?source=hash-mapping - run_exports: {} size: 292835 timestamp: 1762497719397 - conda: https://conda.anaconda.org/conda-forge/linux-64/benchmark-1.9.5-hecca717_0.conda @@ -4351,7 +4372,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: {} size: 290910 timestamp: 1769116980221 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda @@ -4362,7 +4382,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 35436 timestamp: 1774197482571 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda @@ -4375,7 +4394,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 3661455 timestamp: 1774197460085 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda @@ -4386,7 +4404,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 36304 timestamp: 1774197485247 - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda @@ -4403,9 +4420,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - blosc >=1.21.6,<2.0a0 size: 48427 timestamp: 1733513201413 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda @@ -4420,11 +4434,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlicommon >=1.2.0,<1.3.0a0 - - libbrotlienc >=1.2.0,<1.3.0a0 - - libbrotlidec >=1.2.0,<1.3.0a0 size: 20103 timestamp: 1764017231353 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda @@ -4438,7 +4447,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 21021 timestamp: 1764017221344 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda @@ -4456,7 +4464,6 @@ packages: license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - run_exports: {} size: 368300 timestamp: 1764017300621 - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-3.25-h26dfbe5_5.conda @@ -4469,7 +4476,6 @@ packages: - python license: Zlib purls: [] - run_exports: {} size: 11631 timestamp: 1761041385662 - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-cpp-3.25-hcbe3ca9_5.conda @@ -4486,9 +4492,6 @@ packages: - xorg-libxext >=1.3.6,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - bullet-cpp >=3.25,<3.26.0a0 size: 42581149 timestamp: 1761041037901 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda @@ -4500,9 +4503,6 @@ packages: license: bzip2-1.0.6 license_family: BSD purls: [] - run_exports: - weak: - - bzip2 >=1.0.8,<2.0a0 size: 260182 timestamp: 1771350215188 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda @@ -4514,9 +4514,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - c-ares >=1.34.6,<2.0a0 size: 207882 timestamp: 1765214722852 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda @@ -4529,7 +4526,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6693 timestamp: 1753098721814 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda @@ -4557,9 +4553,6 @@ packages: - xorg-libxrender >=0.9.12,<0.10.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - run_exports: - weak: - - cairo >=1.18.4,<2.0a0 size: 989514 timestamp: 1766415934926 - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda @@ -4574,7 +4567,6 @@ packages: license_family: MIT purls: - pkg:pypi/cbor2?source=hash-mapping - run_exports: {} size: 116357 timestamp: 1775229769097 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda @@ -4591,9 +4583,38 @@ packages: license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - run_exports: {} size: 295716 timestamp: 1761202958833 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h99862b1_4.conda + sha256: 406ae4d989cc3bec99c4c3125476c66b1e39da0c4bbc49f7a0ddecf6a5814af9 + md5: 6cb5791382ee325b61377cc2f2f26ae9 + depends: + - __glibc >=2.17,<3.0.a0 + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_h99862b1_4 + - libgcc >=14 + - libllvm21 >=21.1.8,<21.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 829487 + timestamp: 1777010933851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hcbb2b3e_4.conda + sha256: 9c62039a5717e033dfc0ce145de44e2bc9d5123d9e02345a5e9b9015833d35ae + md5: 3ed56c087ec2b8ee528991df28519e9c + depends: + - binutils + - clang-21 21.1.8 default_h99862b1_4 + - clang_impl_linux-64 21.1.8 default_h0a60c25_4 + - libgcc-devel_linux-64 + - llvm-openmp >=21.1.8 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28693 + timestamp: 1777011007539 - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda sha256: 92087869cccace0433bcd852f9476ee56b1540e4e2a234a6befdb3d3dd595c30 md5: a088cd39b7d8d0cdb7ace83ad146381e @@ -4606,7 +4627,6 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: {} size: 71485 timestamp: 1777011252467 - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda @@ -4622,9 +4642,23 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: {} size: 28677 timestamp: 1777011299688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_h0a60c25_4.conda + sha256: 9d2c824c95e610fca649a7c20568851716c8bc5b1e53726d3bca94ce0efb6dfe + md5: 3f534da6723cb8431f12b925247831da + depends: + - binutils_impl_linux-64 + - clang-21 21.1.8 default_h99862b1_4 + - compiler-rt 21.1.8.* + - compiler-rt_linux-64 21.1.8.* + - libgcc-devel_linux-64 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28218 + timestamp: 1777010989729 - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda sha256: 1d635e8963e094d95d35148df4b46e495f93bb0750ad5069f4e0e6bbb47ac3bf md5: 83dae3dfadcfec9b37a9fbff6f7f7378 @@ -4635,7 +4669,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 99051 timestamp: 1772207728613 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda @@ -4656,7 +4689,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 19042008 timestamp: 1718668981413 - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda @@ -4688,7 +4720,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-common-extensions?source=hash-mapping - run_exports: {} size: 13032 timestamp: 1759757821346 - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda @@ -4703,9 +4734,34 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-notification?source=hash-mapping - run_exports: {} size: 82327 timestamp: 1774664643705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + sha256: 858d6848e0b078c32e3a809d6d0e2d0ab9fc3069a567f117fd3dc71f9205e6d0 + md5: 3ac91ecdddec705b30d71680db84ac9d + depends: + - compiler-rt21 21.1.8 hb700be7_1 + - libcompiler-rt 21.1.8 hb700be7_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16177 + timestamp: 1769057142509 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda + sha256: ea3adf9924c6d52c9ba0767556e23f436b1619a99247aeda04f7d0907e9726b3 + md5: 7f1e2ba1c7d2ad3d5b57a12149c4af45 + depends: + - __glibc >=2.17,<3.0.a0 + - compiler-rt21_linux-64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 114459 + timestamp: 1769057141242 - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda sha256: 5709f2cbfeb8690317ba702611bdf711a502b417fecda6ad3313e501f6f8bd61 md5: fdcf2e31dd960ef7c5daa9f2c95eff0e @@ -4716,20 +4772,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 7482 timestamp: 1753098722454 -- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - sha256: 769357d82d19f59c23888d935d92b67739bdb2acaacaa7bbe7c4fe4ee5346287 - md5: fd57230e9a97b97bf20dd63aeae6fe61 - depends: - - gcc_impl_linux-64 >=14.3.0,<14.3.1.0a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - run_exports: {} - size: 31751 - timestamp: 1778268677594 - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 sha256: 29caeda123ea705e68de46dc3b86065ec78f5b44d7ae69b320cc57e136d2d9d7 md5: e891b2b856a57d2b2ddb9ed366e3f2ce @@ -4739,9 +4783,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - console_bridge >=1.0.2,<1.1.0a0 size: 18460 timestamp: 1648912649612 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda @@ -4758,12 +4799,11 @@ packages: license_family: BSD purls: - pkg:pypi/contourpy?source=hash-mapping - run_exports: {} size: 320386 timestamp: 1769155979897 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.3-py312h8a5da7c_0.conda - sha256: 15b33937f062c7c94f5978127fbcae1d3b9c30ff4dff59adab9ab2bd18365024 - md5: 685d6d2fac5fd5abfc581db3c94652b9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.1-py312h8a5da7c_0.conda + sha256: 80b990c6870c721bcde5e14e71d3560bac3dad93b54d027f723dca2bb7ccda03 + md5: 6668e2af2de730400bdce9cf2ea132f9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4774,9 +4814,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - run_exports: {} - size: 393058 - timestamp: 1782178186395 + size: 389696 + timestamp: 1779838017522 - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda sha256: f4321bdeddc9178f006a8cc3dedeaf32ab7e4c3be843845fbf594bc07999d2d6 md5: ab786ccd5cc6a08c0ebd5f6154c9dfcd @@ -4794,7 +4833,6 @@ packages: license_family: GPL purls: - pkg:pypi/cppcheck-htmlreport?source=hash-mapping - run_exports: {} size: 3065679 timestamp: 1757440259649 - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda @@ -4808,17 +4846,16 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 30502 timestamp: 1763728886940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - sha256: c12e00af17f1507dbc186c9c663b44ca58b9b2209f59506be05547bd730346e5 - md5: 46142c21318ee17d5beecf0de1fc5d47 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.1-py312ha4b625e_0.conda + sha256: 1909a5bad2a01574d102bc83ef0be757adc534c6316c85fa54123b3e33ce53fd + md5: 8b950d5ee0663fe44aa4295dd39f93d7 depends: - __glibc >=2.17,<3.0.a0 - cffi >=2.0 - libgcc >=14 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: @@ -4827,27 +4864,25 @@ packages: license_family: BSD purls: - pkg:pypi/cryptography?source=hash-mapping - run_exports: {} - size: 1912490 - timestamp: 1781385597345 -- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hcf29cc6_0.conda - sha256: db25befdce25abd42e8c8eafd6bf988b83618eec49e982d41e63429c28803ced - md5: 35caaabe13a4aa0fe77ea634c71478b8 + size: 1912321 + timestamp: 1781060958413 +- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.20.0-hcf29cc6_0.conda + sha256: 24b6ccc111388df77c65c68b3f3cad9f066e11741469fa60052ad0773f941c6e + md5: cc1a446bff91be88b2fa1d629e4f348b depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 - - libcurl 8.21.0 hcf29cc6_0 + - libcurl 8.20.0 hcf29cc6_0 - libgcc >=14 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] - run_exports: {} - size: 194657 - timestamp: 1782296550391 + size: 191489 + timestamp: 1777461498522 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda sha256: 3fcc97ae3e89c150401a50a4de58794ffc67b1ed0e1851468fcc376980201e25 md5: 5da8c935dca9186673987f79cef0b2a5 @@ -4858,7 +4893,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6635 timestamp: 1753098722177 - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda @@ -4875,9 +4909,6 @@ packages: license: BSD-3-Clause-Attribution license_family: BSD purls: [] - run_exports: - weak: - - cyrus-sasl >=2.1.28,<3.0a0 size: 210103 timestamp: 1771943128249 - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda @@ -4888,9 +4919,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - dav1d >=1.2.1,<1.2.2.0a0 size: 760229 timestamp: 1685695754230 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda @@ -4905,9 +4933,6 @@ packages: - libexpat >=2.7.3,<3.0a0 license: AFL-2.1 OR GPL-2.0-or-later purls: [] - run_exports: - weak: - - dbus >=1.16.2,<2.0a0 size: 447649 timestamp: 1764536047944 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.3.2-py312h7347394_6.conda @@ -4924,7 +4949,6 @@ packages: license_family: MIT purls: - pkg:pypi/dbus-python?source=hash-mapping - run_exports: {} size: 292892 timestamp: 1759741046729 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda @@ -4937,9 +4961,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - double-conversion >=3.4.0,<3.5.0a0 size: 71809 timestamp: 1765193127016 - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h54a6638_2.conda @@ -4952,7 +4973,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: {} size: 1173190 timestamp: 1771922274213 - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-3.4.0.100-h3bcb7cf_2.conda @@ -4963,7 +4983,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: {} size: 13146 timestamp: 1771922274215 - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda @@ -4984,9 +5003,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - elfutils >=0.194,<0.195.0a0 size: 1289929 timestamp: 1765447425767 - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda @@ -5010,26 +5026,20 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - epoxy >=1.5.10,<1.6.0a0 size: 411735 timestamp: 1758743520805 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_1.conda - sha256: bc1e8177a4ebbbfcda98b6f4a1575f3337e69f0d2f1025a84570533ca27b89eb - md5: e211a78613b9d50a096644b97cede8f7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_0.conda + sha256: 29a10599d56d93bd750914888ebe6822d47722070762b4647b34d12df9f4476e + md5: d0757fd84af06f065eba49d39af6c546 depends: - __glibc >=2.17,<3.0.a0 - - libexpat 2.8.1 hecca717_1 + - libexpat 2.8.1 hecca717_0 - libgcc >=14 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libexpat >=2.8.1,<3.0a0 - size: 147797 - timestamp: 1781203608158 + size: 148238 + timestamp: 1779278694477 - conda: https://conda.anaconda.org/conda-forge/linux-64/fcl-0.7.0-h543440a_8.conda sha256: b082e91c7309ffed0aa01d97aa7c7acc8deddad152211153dce381817a4ef4f6 md5: eb7214feba07f44bff77a3ad510231a9 @@ -5043,9 +5053,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - fcl >=0.7.0,<0.8.0a0 size: 1590323 timestamp: 1736132840079 - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_h43fde53_912.conda @@ -5110,9 +5117,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - ffmpeg >=8.0.1,<9.0a0 size: 12479894 timestamp: 1769713683312 - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.11-nompi_h3b011a4_100.conda @@ -5127,9 +5131,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - fftw >=3.3.11,<4.0a0 size: 2195198 timestamp: 1776781721834 - conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-he1b7b50_6.conda @@ -5145,9 +5146,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - flann >=1.9.2,<1.9.3.0a0 size: 1990499 timestamp: 1774331944832 - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda @@ -5160,9 +5158,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - fmt >=12.1.0,<12.2.0a0 size: 198107 timestamp: 1767681153946 - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda @@ -5179,10 +5174,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - fontconfig >=2.18.1,<3.0a0 - - fonts-conda-ecosystem size: 281880 timestamp: 1780450077431 - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda @@ -5200,7 +5191,6 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - run_exports: {} size: 3007892 timestamp: 1778770568019 - conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda @@ -5212,9 +5202,6 @@ packages: - libstdcxx >=13 license: Zlib purls: [] - run_exports: - weak: - - foonathan-memory >=0.7.3,<0.7.4.0a0 size: 227132 timestamp: 1746246721660 - conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.11.0-h9bea470_0.conda @@ -5228,7 +5215,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6656 timestamp: 1753098722318 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda @@ -5250,9 +5236,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - freeglut >=3.2.2,<4.0a0 size: 146159 timestamp: 1776928018299 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda @@ -5274,9 +5257,6 @@ packages: - openjpeg >=2.5.4,<3.0a0 license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage purls: [] - run_exports: - weak: - - freeimage >=3.18.0,<3.19.0a0 size: 469606 timestamp: 1780001489759 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda @@ -5287,10 +5267,6 @@ packages: - libfreetype6 2.14.3 h73754d4_0 license: GPL-2.0-only OR FTL purls: [] - run_exports: - weak: - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 size: 173839 timestamp: 1774298173462 - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda @@ -5301,9 +5277,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - fribidi >=1.0.16,<2.0a0 size: 61244 timestamp: 1757438574066 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda @@ -5319,21 +5292,20 @@ packages: license_family: APACHE purls: - pkg:pypi/frozenlist?source=hash-mapping - run_exports: {} size: 55016 timestamp: 1779999817627 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda - sha256: e3f541c4be7296b800a972482b7a5e399614d5e3310d3d083257fbdb4df81ea0 - md5: 2dd149aa693db92758af3e685ef30439 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h6f77f03_19.conda + sha256: 5c86862941a44b2554e23e623ddb8f18c95474cacf536635e38ee431385b7d4a + md5: 444fafd4d1acdfe80c49b559a2569ba1 depends: - - conda-gcc-specs - gcc_impl_linux-64 14.3.0 h235f0fe_19 + track_features: + - gcc_no_conda_specs license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 29459 - timestamp: 1778268802660 + size: 29453 + timestamp: 1778268811434 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda sha256: 1e2500ca976d4831c953d1c6db7b238d2e6806910b930e3eb631b79ba5c3ba41 md5: 99936dc616b7ce97b0468759b8a7c64e @@ -5349,7 +5321,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 77667192 timestamp: 1778268558509 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda @@ -5366,12 +5337,11 @@ packages: - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 81043749 timestamp: 1778860073982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda - sha256: d7f427d6db94a5eed2a43b186f8dc17cc1fbeb03517442390a36f1cde02548b0 - md5: 90369fa27fae2f7bf7eaaccc34c793e2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_25.conda + sha256: 95d22db25f0b8875febe63073f809c0c64f4026cc9e6aa0cca7130de51e4d044 + md5: 0a9089d9eeeeb23313a9ce670fb89052 depends: - gcc_impl_linux-64 14.3.0.* - binutils_linux-64 @@ -5379,25 +5349,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libgcc >=14 - size: 29324 - timestamp: 1781279939286 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_27.conda - sha256: b24b13d467898a9b9a17a868a2686412a98f8935dc7cc51547dd90645d4e8436 - md5: 28bc49875f9c38e2401696b3e48d0798 - depends: - - gcc_impl_linux-64 15.2.0.* - - binutils_linux-64 - - sysroot_linux-64 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong: - - libgcc >=15 - size: 29330 - timestamp: 1781279944230 + size: 29191 + timestamp: 1779371710532 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda sha256: c5594497f0646e9079705b3199dbb2d5b13c48173cf110000fa1c8818e2b3e0c md5: 7892f39a39ed39591a89a28eba03e987 @@ -5412,9 +5365,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gdk-pixbuf >=2.44.6,<3.0a0 size: 577414 timestamp: 1774985848058 - conda: https://conda.anaconda.org/conda-forge/linux-64/geographiclib-cpp-2.7-hb700be7_0.conda @@ -5427,9 +5377,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - geographiclib-cpp >=2.7,<2.8.0a0 size: 766298 timestamp: 1762551378982 - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.25.1-h3f43e3d_1.conda @@ -5447,10 +5394,6 @@ packages: - libstdcxx >=14 license: LGPL-2.1-or-later AND GPL-3.0-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 - - libgettextpo >=0.25.1,<1.0a0 size: 541357 timestamp: 1753343006214 - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.25.1-h3f43e3d_1.conda @@ -5463,22 +5406,20 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: {} size: 3644103 timestamp: 1753342966311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda - sha256: 7ab008dd3dc5e6ca0de2614771019a1d35480d51df6216c96b1cf6a5e660ee40 - md5: 94394acdc56dcb4d55dddf0393134966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-h76987e4_19.conda + sha256: 84b3b7863dbafb651a2ef989d50f5e3d985b8ebe78bb3df2f17c614f22cdc090 + md5: e4715f9886de7b78aefdfe74f01e739b depends: - - gcc 14.3.0.* - - gcc_impl_linux-64 14.3.0.* - - gfortran_impl_linux-64 14.3.0.* + - gcc 14.3.0 h6f77f03_19 + - gcc_impl_linux-64 14.3.0 h235f0fe_19 + - gfortran_impl_linux-64 14.3.0 h1a219da_19 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 30407 - timestamp: 1759966108779 + size: 28841 + timestamp: 1778268821120 - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda sha256: aee591aab674d70829ecc1abaa7f2ad5fcccbfad7bafa5ebca1225c86c60f18f md5: d5f5c8cc2a64220838a096041b7a7fb4 @@ -5491,27 +5432,21 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 18551249 timestamp: 1778268735401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda - sha256: b8e6bd99f0b7a5e8757a1cf9bf64edc6217206d8872fb9af5d8204e5b581b3d1 - md5: cedd6fb9fad7611ee0bcb0fb531d77f1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h8bb2d51_25.conda + sha256: dd3712c75de3b07ee5cfd9ae88a3bc2c87a1c2683256c24b27e012e3f9f22cdf + md5: 8f6215a6040fd3c2e03e85a6583d3100 depends: - gfortran_impl_linux-64 14.3.0.* - - gcc_linux-64 ==14.3.0 h50e9bb6_27 + - gcc_linux-64 ==14.3.0 h50e9bb6_25 - binutils_linux-64 - sysroot_linux-64 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libgfortran5 >=14.3.0 - - libgfortran - - libgcc >=14 - size: 27545 - timestamp: 1781279939286 + size: 27402 + timestamp: 1779371710532 - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.54.0-pl5321h6d3cee1_1.conda sha256: bc98305103a2754f1b143bc525db9f2c2b0aee6ca278e909ee9eba28c1558c10 md5: ef4ced80193d2a6d4cd92e4b46636b07 @@ -5527,7 +5462,6 @@ packages: - perl 5.* license: GPL-2.0-or-later and LGPL-2.1-or-later purls: [] - run_exports: {} size: 11507059 timestamp: 1780737102525 - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda @@ -5543,9 +5477,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gl2ps >=1.4.2,<1.4.3.0a0 size: 75835 timestamp: 1773985381918 - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda @@ -5561,9 +5492,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - glew >=2.3.0,<2.4.0a0 size: 492673 timestamp: 1766373546677 - conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.4-hb03c661_1.conda @@ -5581,9 +5509,6 @@ packages: - xorg-libxrandr >=1.5.4,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - glfw >=3.4,<4.0a0 size: 166432 timestamp: 1758809197097 - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.1-hd810c12_2.conda @@ -5596,9 +5521,6 @@ packages: - glib-tools ==2.88.1 hee1de02_2 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libglib >=2.88.1,<3.0a0 size: 85268 timestamp: 1778508800134 - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda @@ -5611,7 +5533,6 @@ packages: - __glibc >=2.17,<3.0.a0 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 236955 timestamp: 1778508800134 - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda @@ -5625,9 +5546,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - glslang >=16,<17.0a0 size: 1366082 timestamp: 1777747028121 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-ha770c72_1.conda @@ -5638,7 +5556,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 7578 timestamp: 1748320126956 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda @@ -5649,9 +5566,6 @@ packages: - libstdcxx-ng >=12 license: GPL-2.0-or-later OR LGPL-3.0-or-later purls: [] - run_exports: - weak: - - gmp >=6.3.0,<7.0a0 size: 460055 timestamp: 1718980856608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda @@ -5669,9 +5583,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gnutls >=3.8.13,<3.9.0a0 size: 2054535 timestamp: 1778044634746 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda @@ -5684,9 +5595,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - graphite2 >=1.3.15,<2.0a0 size: 100054 timestamp: 1780454302233 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda @@ -5712,9 +5620,6 @@ packages: license: EPL-1.0 license_family: Other purls: [] - run_exports: - weak: - - graphviz >=14.1.2,<15.0a0 size: 2426455 timestamp: 1769427102743 - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.26.11-h6d08254_0.conda @@ -5750,9 +5655,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gst-plugins-base >=1.26.11,<1.27.0a0 size: 3199241 timestamp: 1776268376145 - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.26.11-h29cf534_0.conda @@ -5769,9 +5671,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gstreamer >=1.26.11,<1.27.0a0 size: 2281638 timestamp: 1776268376145 - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-orc-0.4.42-h82d0256_0.conda @@ -5782,7 +5681,6 @@ packages: - libgcc >=14 license: BSD-2-Clause AND BSD-3-Clause purls: [] - run_exports: {} size: 383443 timestamp: 1768408501404 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda @@ -5797,9 +5695,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - gtest >=1.17.0,<1.17.1.0a0 size: 416610 timestamp: 1748320117187 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda @@ -5843,10 +5738,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gtk3 >=3.24.52,<4.0a0 - - adwaita-icon-theme size: 5939083 timestamp: 1774288645605 - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -5859,23 +5750,19 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gts >=0.7.6,<0.8.0a0 size: 318312 timestamp: 1686545244763 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda - sha256: 7acf0ee3039453aa69f16da063136335a3511f9c157e222def8d03c8a56a1e03 - md5: 91dc0abe7274ac5019deaa6100643265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_19.conda + sha256: 32ff46517d91ee041287687d65140f7b0e8d08bb3fca141e5f97cc4a7ad7e255 + md5: 1167f6b6bfaf9ba5a450c5c8f3a21795 depends: - - gcc 14.3.0.* - - gxx_impl_linux-64 14.3.0.* + - gcc 14.3.0 h6f77f03_19 + - gxx_impl_linux-64 14.3.0 h2185e75_19 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 30403 - timestamp: 1759966121169 + size: 28877 + timestamp: 1778268830629 - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda sha256: a31694c26d6a525d44f81130ebf7b9abe18771b7eaecb2cf93630c0b8b8fb936 md5: 8b867d053ed89743eeac52c3a50f112d @@ -5887,26 +5774,21 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 15235650 timestamp: 1778268773535 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda - sha256: cf5a44d14732b79e3c2bc6ebe1dba4f6b9077939f3093c75e36ad340737b5c15 - md5: 41fae38a424bbc78438cfec6a4fde187 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-h72ca5df_25.conda + sha256: 369abc77d74a8275c734f9ca2375892b86d3163a541b1f5a2de946083a9e3ab0 + md5: 4718c7fefd927621bad46a8bcc6387d6 depends: - gxx_impl_linux-64 14.3.0.* - - gcc_linux-64 ==14.3.0 h50e9bb6_27 + - gcc_linux-64 ==14.3.0 h50e9bb6_25 - binutils_linux-64 - sysroot_linux-64 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libstdcxx >=14 - - libgcc >=14 - size: 27854 - timestamp: 1781279939286 + size: 27696 + timestamp: 1779371710532 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda sha256: b654d0102a8b8242836a5863c0157945b5c549d505383f4f8b724926a55f68aa md5: fda2ad837ffe2ed7f73ddfab260d82e3 @@ -5915,9 +5797,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake3 >=3.5.5,<4.0a0 size: 7430 timestamp: 1759138411890 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-7.5.2-h5bbc156_2.conda @@ -5929,9 +5808,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-math7 >=7.5.2,<8.0a0 size: 8251 timestamp: 1759147748392 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-python-7.5.2-py312h89d136e_2.conda @@ -5949,7 +5825,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 1029585 timestamp: 1759147748392 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools-2.0.3-h3f54f1a_1.conda @@ -5960,9 +5835,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 size: 7803 timestamp: 1759148392717 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools2-2.0.3-h89235b8_1.conda @@ -5973,10 +5845,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 - - libgz-tools >=2.0.3,<3.0a0 size: 7839 timestamp: 1759148392717 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-utils2-2.2.1-hdaf9e28_2.conda @@ -5987,9 +5855,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-utils2 >=2.2.1,<3.0a0 size: 8042 timestamp: 1767701472560 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-h6083320_0.conda @@ -6010,9 +5875,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - harfbuzz >=14.2.1 size: 2362258 timestamp: 1780450503234 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda @@ -6026,9 +5888,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - hdf4 >=4.2.15,<4.2.16.0a0 size: 756742 timestamp: 1695661547874 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda @@ -6047,9 +5906,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - hdf5 >=1.14.6,<1.14.7.0a0 size: 3721555 timestamp: 1780581675871 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda @@ -6058,7 +5914,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 17625 timestamp: 1771539597968 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda @@ -6071,9 +5926,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - icu >=78.3,<79.0a0 size: 12723451 timestamp: 1773822285671 - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda @@ -6087,9 +5939,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - imath >=3.2.2,<3.2.3.0a0 size: 160289 timestamp: 1759983212466 - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda @@ -6102,9 +5951,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - intel-gmmlib >=22.10.0,<23.0a0 size: 1013714 timestamp: 1774422680665 - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-25.3.4-hecca717_0.conda @@ -6119,9 +5965,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - intel-media-driver >=25.3.4,<25.4.0a0 size: 8424610 timestamp: 1757591682198 - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-hf4617a5_3.conda @@ -6136,9 +5979,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - jack >=1.9.22,<1.10.0a0 size: 461260 timestamp: 1747574434594 - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda @@ -6155,9 +5995,6 @@ packages: - libjpeg-turbo >=3.1.2,<4.0a0 license: JasPer-2.0 purls: [] - run_exports: - weak: - - jasper >=4.2.9,<5.0a0 size: 684185 timestamp: 1773677703432 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda @@ -6169,9 +6006,6 @@ packages: - libstdcxx >=13 license: LicenseRef-Public-Domain OR MIT purls: [] - run_exports: - weak: - - jsoncpp >=1.9.6,<1.9.7.0a0 size: 169093 timestamp: 1733780223643 - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda @@ -6182,9 +6016,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - jxrlib >=1.1,<1.2.0a0 size: 239104 timestamp: 1703333860145 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda @@ -6195,9 +6026,6 @@ packages: - libgcc >=13 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - keyutils >=1.6.3,<2.0a0 size: 134088 timestamp: 1754905959823 - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda @@ -6213,12 +6041,11 @@ packages: license_family: BSD purls: - pkg:pypi/kiwisolver?source=hash-mapping - run_exports: {} size: 77120 timestamp: 1773067050308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda - sha256: 9b07046870772f28740e3f6149f09ff222843733087a33c5540b169c6289652d - md5: 54157a1c8c0bb70f62dd0b17fba7e7f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 depends: - __glibc >=2.17,<3.0.a0 - keyutils >=1.6.3,<2.0a0 @@ -6226,15 +6053,12 @@ packages: - libedit >=3.1.20250104,<4.0a0 - libgcc >=14 - libstdcxx >=14 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - krb5 >=1.22.2,<1.23.0a0 - size: 1388990 - timestamp: 1781859420533 + size: 1386730 + timestamp: 1769769569681 - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab md5: a8832b479f93521a9e7b5b743803be51 @@ -6243,9 +6067,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - lame >=3.100,<3.101.0a0 size: 508258 timestamp: 1664996250081 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda @@ -6259,9 +6080,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - lcms2 >=2.19.1,<3.0a0 size: 251971 timestamp: 1780211695895 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda @@ -6275,7 +6093,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 728002 timestamp: 1774197446916 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda @@ -6288,9 +6105,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - lerc >=4.1.0,<5.0a0 size: 261513 timestamp: 1773113328888 - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda @@ -6303,7 +6117,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 875773 timestamp: 1780142086148 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda @@ -6319,10 +6132,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - libabseil >=20250512.1,<20250513.0a0 - - libabseil =*=cxx17* size: 1310612 timestamp: 1750194198254 - conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda @@ -6334,9 +6143,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libacl >=2.3.2,<2.4.0a0 size: 110600 timestamp: 1706132570609 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda @@ -6349,14 +6155,11 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libaec >=1.1.5,<2.0a0 size: 36544 timestamp: 1769221884824 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda - sha256: f916b51f55f51a9bb2d902e0a5f029490f7b745aee549c349751c1787ddc26b8 - md5: 44652e646cb623f486ea72e7e7479222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.7-gpl_hc2c16d8_101.conda + sha256: 78dd3d493d72c7d7c7647912fe383a3545a2695ee308037b64e9d0752ccedbe9 + md5: bb1483d91797dae0b466cab86ceb59a7 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -6367,16 +6170,13 @@ packages: - libzlib >=1.3.2,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - lzo >=2.10,<3.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libarchive >=3.8.8,<3.9.0a0 - size: 867280 - timestamp: 1782289011634 + size: 890218 + timestamp: 1778486345922 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda sha256: cb728a2a95557bb6a5184be2b8be83a6f2083000d0c7eff4ad5bbe5792133541 md5: 3b0d184bc9404516d418d4509e418bdc @@ -6386,9 +6186,6 @@ packages: - libstdcxx >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 size: 53582 timestamp: 1753342901341 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda @@ -6400,9 +6197,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 size: 34734 timestamp: 1753342921605 - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda @@ -6421,9 +6215,6 @@ packages: - harfbuzz >=11.0.1 license: ISC purls: [] - run_exports: - weak: - - libass >=0.17.4,<0.17.5.0a0 size: 152179 timestamp: 1749328931930 - conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda @@ -6435,9 +6226,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libattr >=2.5.2,<2.6.0a0 size: 53316 timestamp: 1773595896163 - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.2-hcfa2d63_0.conda @@ -6453,9 +6241,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libavif16 >=1.4.2,<2.0a0 size: 149510 timestamp: 1779847073231 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda @@ -6474,9 +6259,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libblas >=3.11.0,<4.0a0 size: 18804 timestamp: 1779859100675 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda @@ -6495,7 +6277,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 3072984 timestamp: 1766347479317 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.88.0-hfcd1e18_7.conda @@ -6508,9 +6289,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: - weak: - - libboost >=1.88.0,<1.89.0a0 size: 40112 timestamp: 1766347628036 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.88.0-ha770c72_7.conda @@ -6520,7 +6298,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 14584021 timestamp: 1766347497416 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py312hf890105_7.conda @@ -6539,7 +6316,6 @@ packages: - boost <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 130172 timestamp: 1766347836920 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-devel-1.88.0-py312h26dfbe5_7.conda @@ -6556,9 +6332,6 @@ packages: - boost <0.0a0 license: BSL-1.0 purls: [] - run_exports: - weak: - - libboost-python >=1.88.0,<1.89.0a0 size: 18972 timestamp: 1766348204323 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda @@ -6570,9 +6343,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlicommon >=1.2.0,<1.3.0a0 size: 79965 timestamp: 1764017188531 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda @@ -6585,9 +6355,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlidec >=1.2.0,<1.3.0a0 size: 34632 timestamp: 1764017199083 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda @@ -6600,9 +6367,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlienc >=1.2.0,<1.3.0a0 size: 298378 timestamp: 1764017210931 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda @@ -6614,9 +6378,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libcap >=2.77,<2.78.0a0 size: 124432 timestamp: 1774333989027 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda @@ -6632,9 +6393,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libcblas >=3.11.0,<4.0a0 size: 18778 timestamp: 1779859107964 - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda @@ -6648,9 +6406,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libccd-double >=2.1,<2.2.0a0 size: 36171 timestamp: 1687341825064 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda @@ -6664,43 +6419,48 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang-cpp21.1 >=21.1.8,<21.2.0a0 size: 21066414 timestamp: 1777010859192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h99862b1_2.conda - sha256: 5babbfdcc84d445631c961fafe1484e2e09744145eb4fd20c84d750ceb3e9bf6 - md5: bae509d52a3e6d971d803c16dada388e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.7-default_h99862b1_1.conda + sha256: e638accaebe12402ce1c80ac2ba04be8114bbaa71d4012fbe8f2661fa76ea841 + md5: 56888f4782b0a0c6fd293d8138c679bf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libllvm22 >=22.1.8,<22.2.0a0 + - libllvm22 >=22.1.7,<22.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang-cpp22.1 >=22.1.8,<22.2.0a0 - size: 21707766 - timestamp: 1781852798077 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h746c552_2.conda - sha256: 1eb59e923b08200403a98078f37463b314fd84cda15191d2519f82bb129765af - md5: 26dbde0121b51e6707591310a31ed5e0 + size: 21680350 + timestamp: 1780522287716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.7-default_h746c552_1.conda + sha256: 5100d6571c361a3b4123007b71448a15901ad63ac948f3f02bbc7df4079fe4d1 + md5: f5d04d68e7fd19a24f1fe35a74bafabb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libllvm22 >=22.1.8,<22.2.0a0 + - libllvm22 >=22.1.7,<22.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang13 >=22.1.8 - size: 12865595 - timestamp: 1781852955604 + size: 12818349 + timestamp: 1780522452233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda + sha256: 6f76c19dd29c2d2916e919d01e929717a7c88145523c6dffe8619f3c8bb2f9eb + md5: 3b4d8d38ce35c48ad0d6415ef286541e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 10606333 + timestamp: 1769057116625 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -6713,14 +6473,11 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - libcups >=2.3.3,<2.4.0a0 size: 4518030 timestamp: 1770902209173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hcf29cc6_0.conda - sha256: 93ab25f02666eb8696fa70d9c920f2e3b370742ee17e2758705038a72e11147f - md5: dcd79cabd5d435f48d75db3d81cb5874 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda + sha256: 75963a5dd913311f59a35dbd307592f4fa754c4808aff9c33edb430c415e38eb + md5: c3cc2864f82a944bc90a7beb4d3b0e88 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 @@ -6728,16 +6485,13 @@ packages: - libnghttp2 >=1.68.1,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] - run_exports: - weak: - - libcurl >=8.21.0,<9.0a0 - size: 479582 - timestamp: 1782296544301 + size: 468706 + timestamp: 1777461492876 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -6747,9 +6501,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libdeflate >=1.25,<1.26.0a0 size: 73490 timestamp: 1761979956660 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda @@ -6762,9 +6513,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libdrm >=2.4.127,<2.5.0a0 size: 311505 timestamp: 1778975798004 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -6778,9 +6526,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libedit >=3.1.20250104,<3.2.0a0 size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_3.conda @@ -6791,7 +6536,6 @@ packages: - libglvnd 1.7.0 ha4b6fd6_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 46500 timestamp: 1779728188901 - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda @@ -6804,9 +6548,6 @@ packages: - xorg-libx11 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libegl >=1.7.0,<2.0a0 size: 31718 timestamp: 1779728222280 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -6817,9 +6558,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libev >=4.33,<4.34.0a0 size: 112766 timestamp: 1702146165126 - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -6831,14 +6569,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libevent >=2.1.12,<2.1.13.0a0 size: 427426 timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - sha256: 16feffd9ddbbe5b718515d38ee376c685ba95491cd901244e24671d20b952a77 - md5: b24d3c612f71e7aa74158d92106318b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda + sha256: 363018b25fdb5534c79783d912bd4b685a3547f4fc5996357ad548899b0ee8e7 + md5: 93764a5ca80616e9c10106cdaec92f74 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6847,9 +6582,8 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} - size: 77856 - timestamp: 1781203599810 + size: 77294 + timestamp: 1779278686680 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 md5: a360c33a5abe61c07959e449fa1453eb @@ -6859,9 +6593,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libffi >=3.5.2,<3.6.0a0 size: 58592 timestamp: 1769456073053 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda @@ -6876,9 +6607,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libflac >=1.4.3,<1.5.0a0 size: 394383 timestamp: 1687765514062 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda @@ -6888,7 +6616,6 @@ packages: - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} size: 8049 timestamp: 1774298163029 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda @@ -6903,7 +6630,6 @@ packages: - freetype >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} size: 384575 timestamp: 1774298162622 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda @@ -6918,7 +6644,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 1041084 timestamp: 1778269013026 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda @@ -6929,9 +6654,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - libgcc size: 27694 timestamp: 1778269016987 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda @@ -6954,9 +6676,6 @@ packages: license: GD license_family: BSD purls: [] - run_exports: - weak: - - libgd >=2.3.3,<2.4.0a0 size: 177306 timestamp: 1766331805898 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.25.1-h3f43e3d_1.conda @@ -6969,9 +6688,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libgettextpo >=0.25.1,<1.0a0 size: 188293 timestamp: 1753342911214 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.25.1-h3f43e3d_1.conda @@ -6985,9 +6701,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libgettextpo >=0.25.1,<1.0a0 size: 37407 timestamp: 1753342931100 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda @@ -7000,7 +6713,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 27655 timestamp: 1778269042954 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda @@ -7014,7 +6726,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 2483673 timestamp: 1778269025089 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda @@ -7026,7 +6737,6 @@ packages: - libglx 1.7.0 ha4b6fd6_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 133469 timestamp: 1779728207669 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_3.conda @@ -7038,9 +6748,6 @@ packages: - libglx-devel 1.7.0 ha4b6fd6_3 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libgl >=1.7.0,<2.0a0 size: 115664 timestamp: 1779728218325 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda @@ -7057,9 +6764,6 @@ packages: - glib >2.66 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libglib >=2.88.1,<3.0a0 size: 4754097 timestamp: 1778508800134 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda @@ -7072,9 +6776,6 @@ packages: - libstdcxx >=13 license: SGI-B-2.0 purls: [] - run_exports: - weak: - - libglu >=9.0.3,<9.1.0a0 size: 325262 timestamp: 1748692137626 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda @@ -7084,7 +6785,6 @@ packages: - __glibc >=2.17,<3.0.a0 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 133586 timestamp: 1779728183422 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda @@ -7096,7 +6796,6 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 76586 timestamp: 1779728199059 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_3.conda @@ -7109,9 +6808,6 @@ packages: - xorg-xorgproto license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libglx >=1.7.0,<2.0a0 size: 27363 timestamp: 1779728211402 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda @@ -7122,9 +6818,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - _openmp_mutex >=4.5 size: 603817 timestamp: 1778268942614 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake3-3.5.5-h54a6638_0.conda @@ -7138,9 +6831,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake3 >=3.5.5,<4.0a0 size: 217564 timestamp: 1759138411890 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake4-4.2.0-h54a6638_1.conda @@ -7153,9 +6843,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake4 >=4.2.0,<5.0a0 size: 217934 timestamp: 1759138566319 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-math7-7.5.2-h54a6638_2.conda @@ -7171,9 +6858,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-math7 >=7.5.2,<8.0a0 size: 295819 timestamp: 1759147748392 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-tools-2.0.3-h54a6638_1.conda @@ -7188,9 +6872,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 size: 49853 timestamp: 1759148392717 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-utils2-2.2.1-h54a6638_2.conda @@ -7205,9 +6886,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-utils2 >=2.2.1,<3.0a0 size: 63479 timestamp: 1767701472558 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda @@ -7222,9 +6900,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libhwloc >=2.13.0,<2.13.1.0a0 size: 2436378 timestamp: 1770953868164 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda @@ -7236,9 +6911,6 @@ packages: - libstdcxx >=14 license: Apache-2.0 OR BSD-3-Clause purls: [] - run_exports: - weak: - - libhwy >=1.4.0,<1.5.0a0 size: 1435782 timestamp: 1776989559668 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda @@ -7249,9 +6921,6 @@ packages: - libgcc >=14 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libiconv >=1.18,<2.0a0 size: 790176 timestamp: 1754908768807 - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda @@ -7264,9 +6933,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - libidn2 >=2,<3.0a0 size: 139036 timestamp: 1760385590993 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda @@ -7279,9 +6945,6 @@ packages: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - run_exports: - weak: - - libjpeg-turbo >=3.1.4.1,<4.0a0 size: 633831 timestamp: 1775962768273 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda @@ -7297,9 +6960,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libjxl >=0.11,<1.0a0 size: 1846962 timestamp: 1777065125966 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda @@ -7315,9 +6975,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - liblapack >=3.11.0,<3.12.0a0 size: 18790 timestamp: 1779859115086 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda @@ -7333,9 +6990,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - liblapacke >=3.11.0,<3.12.0a0 size: 18824 timestamp: 1779859122364 - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda @@ -7352,14 +7006,11 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libllvm21 >=21.1.8,<21.2.0a0 size: 44333366 timestamp: 1765959132513 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda - sha256: e9b5f301d6b001a9b8ce782157f56b75c92c4fbc9eba95dc6345c1139251d13b - md5: 298bb2483fc7d15396147cf1c1465359 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.7-hf7376ad_0.conda + sha256: 7b2cfedb9a0c4d2329e6b5e527f36e23579c985f00073330c5d739cdd4592218 + md5: 963a932cab52c52cb9cda5877d0d8537 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7371,11 +7022,8 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libllvm22 >=22.1.8,<22.2.0a0 - size: 44320272 - timestamp: 1781788728739 + size: 44240299 + timestamp: 1780445743730 - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda sha256: 7620c6425d4491e17083106ca49624448fc16186c30a93cf2b58f862bba416d1 md5: 8e5de39cab514fa908fcaa7ba37a8738 @@ -7385,9 +7033,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libltdl >=2.4.3a,<2.5.0a0 size: 38472 timestamp: 1740593829307 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda @@ -7400,9 +7045,6 @@ packages: - xz 5.8.3.* license: 0BSD purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 113478 timestamp: 1775825492909 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda @@ -7414,9 +7056,6 @@ packages: - liblzma 5.8.3 hb03c661_0 license: 0BSD purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 491429 timestamp: 1775825511214 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.5-hc2fc477_0.conda @@ -7429,9 +7068,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libmicrohttpd >=1.0.5,<1.1.0a0 size: 287897 timestamp: 1779091106723 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmujoco-3.6.0-h31df9c7_0.conda @@ -7453,9 +7089,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libmujoco >=3.6.0,<3.6.1.0a0 size: 11159916 timestamp: 1773254855824 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda @@ -7481,9 +7114,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libnetcdf >=4.9.3,<4.9.4.0a0 size: 870788 timestamp: 1770718321021 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda @@ -7501,9 +7131,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libnghttp2 >=1.68.1,<2.0a0 size: 663344 timestamp: 1773854035739 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda @@ -7515,9 +7142,6 @@ packages: license: LGPL-2.1-only license_family: GPL purls: [] - run_exports: - weak: - - libnsl >=2.0.1,<2.1.0a0 size: 33731 timestamp: 1750274110928 - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda @@ -7528,9 +7152,6 @@ packages: - libgcc >=13 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libntlm >=1.8,<2.0a0 size: 33418 timestamp: 1734670021371 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda @@ -7541,9 +7162,6 @@ packages: - libgcc >=14 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libnuma >=2.0.18,<3.0a0 size: 44408 timestamp: 1772779840609 - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda @@ -7555,9 +7173,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libogg >=1.3.5,<1.4.0a0 size: 218500 timestamp: 1745825989535 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda @@ -7573,9 +7188,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libopenblas >=0.3.33,<1.0a0 size: 5931919 timestamp: 1776993658641 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopencv-4.12.0-qt6_py312h52d6ec5_612.conda @@ -7629,9 +7241,6 @@ packages: purls: - pkg:pypi/opencv-python?source=hash-mapping - pkg:pypi/opencv-python-headless?source=hash-mapping - run_exports: - weak: - - libopencv >=4.12.0,<4.12.1.0a0 size: 32672205 timestamp: 1766495315053 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_3.conda @@ -7642,7 +7251,6 @@ packages: - libglvnd 1.7.0 ha4b6fd6_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 51767 timestamp: 1779728204026 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_3.conda @@ -7653,9 +7261,6 @@ packages: - libopengl 1.7.0 ha4b6fd6_3 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libopengl >=1.7.0,<2.0a0 size: 16667 timestamp: 1779728214747 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2025.4.1-hb56ce9e_1.conda @@ -7668,9 +7273,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: - weak: - - libopenvino >=2025.4.1,<2025.4.2.0a0 size: 6504144 timestamp: 1769904250547 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.4.1-hd85de46_1.conda @@ -7683,7 +7285,6 @@ packages: - libstdcxx >=14 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 114792 timestamp: 1769904275716 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2025.4.1-hd85de46_1.conda @@ -7696,7 +7297,6 @@ packages: - libstdcxx >=14 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 250114 timestamp: 1769904292210 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2025.4.1-hd41364c_1.conda @@ -7709,7 +7309,6 @@ packages: - libstdcxx >=14 - pugixml >=1.15,<1.16.0a0 purls: [] - run_exports: {} size: 212030 timestamp: 1769904308850 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2025.4.1-hb56ce9e_1.conda @@ -7723,7 +7322,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 12956806 timestamp: 1769904325853 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2025.4.1-hb56ce9e_1.conda @@ -7738,7 +7336,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 11421657 timestamp: 1769904366195 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2025.4.1-hb56ce9e_1.conda @@ -7753,7 +7350,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 1743490 timestamp: 1769904403110 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2025.4.1-hd41364c_1.conda @@ -7766,9 +7362,6 @@ packages: - libstdcxx >=14 - pugixml >=1.15,<1.16.0a0 purls: [] - run_exports: - weak: - - libopenvino-ir-frontend >=2025.4.1,<2025.4.2.0a0 size: 200411 timestamp: 1769904421156 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2025.4.1-h1862bb8_1.conda @@ -7783,9 +7376,6 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-onnx-frontend >=2025.4.1,<2025.4.2.0a0 size: 1902792 timestamp: 1769904438153 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2025.4.1-h1862bb8_1.conda @@ -7800,9 +7390,6 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-paddle-frontend >=2025.4.1,<2025.4.2.0a0 size: 745483 timestamp: 1769904456844 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2025.4.1-hecca717_1.conda @@ -7814,9 +7401,6 @@ packages: - libopenvino 2025.4.1 hb56ce9e_1 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-pytorch-frontend >=2025.4.1,<2025.4.2.0a0 size: 1266512 timestamp: 1769904473901 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.4.1-h0767aad_1.conda @@ -7832,9 +7416,6 @@ packages: - libstdcxx >=14 - snappy >=1.2.2,<1.3.0a0 purls: [] - run_exports: - weak: - - libopenvino-tensorflow-frontend >=2025.4.1,<2025.4.2.0a0 size: 1324086 timestamp: 1769904491964 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.4.1-hecca717_1.conda @@ -7846,9 +7427,6 @@ packages: - libopenvino 2025.4.1 hb56ce9e_1 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-tensorflow-lite-frontend >=2025.4.1,<2025.4.2.0a0 size: 496261 timestamp: 1769904509651 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda @@ -7860,9 +7438,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libopus >=1.6.1,<2.0a0 size: 324993 timestamp: 1768497114401 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda @@ -7874,9 +7449,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libpciaccess >=0.19,<0.20.0a0 size: 29147 timestamp: 1773533027610 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda @@ -7888,9 +7460,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement purls: [] - run_exports: - weak: - - libpng >=1.6.58,<1.7.0a0 size: 317729 timestamp: 1776315175087 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_0.conda @@ -7905,9 +7474,6 @@ packages: - openssl >=3.5.6,<4.0a0 license: PostgreSQL purls: [] - run_exports: - weak: - - libpq >=18.4,<19.0a0 size: 2754709 timestamp: 1778786234149 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-hfb7daa7_5.conda @@ -7923,29 +7489,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libprotobuf >=6.31.1,<6.31.2.0a0 size: 4204474 timestamp: 1780003940664 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h75b3fb1_0.conda - sha256: 36870c7e6362386c687f2f40d98de28f53ef84582ff65792f2f53981ede82681 - md5: 6855be9eb1d891cd5afb5eb90501c74c - depends: - - libgcc >=14 - - __glibc >=2.28,<3.0.a0 - - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=14.2.1 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - libraqm >=0.10.5,<0.11.0a0 - size: 29594 - timestamp: 1780835041392 - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda sha256: 2d2eb9147efeec20bcc89313fa55d052829b7d23def0e8eed039d374ecaf785e md5: bbb55eb739ed4188e24904cafa939567 @@ -7960,9 +7505,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libraw >=0.22.1,<0.23.0a0 size: 752027 timestamp: 1775541726097 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda @@ -7983,9 +7525,6 @@ packages: - __glibc >=2.17 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - librsvg >=2.62.3,<3.0a0 size: 3476570 timestamp: 1780450632624 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda @@ -7998,9 +7537,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - weak: - - libsanitizer 14.3.0 size: 7947790 timestamp: 1778268494844 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda @@ -8012,9 +7548,6 @@ packages: - libstdcxx >=15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: - weak: - - libsanitizer 15.2.0 size: 7930689 timestamp: 1778269054623 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda @@ -8034,9 +7567,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libsdformat14 >=14.8.0,<15.0a0 size: 1236819 timestamp: 1759339825312 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda @@ -8054,9 +7584,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libsndfile >=1.2.2,<1.3.0a0 size: 354372 timestamp: 1695747735668 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda @@ -8067,9 +7594,6 @@ packages: - libgcc >=14 license: ISC purls: [] - run_exports: - weak: - - libsodium >=1.0.22,<1.0.23.0a0 size: 269272 timestamp: 1779163468406 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda @@ -8081,9 +7605,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] - run_exports: - weak: - - libsqlite >=3.53.2,<4.0a0 size: 957849 timestamp: 1780574429573 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda @@ -8097,9 +7618,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libssh2 >=1.11.1,<2.0a0 size: 304790 timestamp: 1745608545575 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda @@ -8113,7 +7631,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 5852044 timestamp: 1778269036376 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda @@ -8124,9 +7641,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - libstdcxx size: 27776 timestamp: 1778269074600 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda @@ -8138,7 +7652,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 492799 timestamp: 1773797095649 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_0.conda @@ -8149,9 +7662,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libtasn1 >=4.21.0,<5.0a0 size: 116738 timestamp: 1768297813301 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda @@ -8166,9 +7676,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libtheora >=1.1.1,<1.2.0a0 size: 328924 timestamp: 1719667859099 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda @@ -8187,9 +7694,6 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - run_exports: - weak: - - libtiff >=4.7.1,<4.8.0a0 size: 435273 timestamp: 1762022005702 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda @@ -8202,7 +7706,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 415044 timestamp: 1740593851157 - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda @@ -8214,7 +7717,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 145087 timestamp: 1773797108513 - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 @@ -8224,9 +7726,6 @@ packages: - libgcc-ng >=9.3.0 license: GPL-3.0-only OR LGPL-3.0-only purls: [] - run_exports: - weak: - - libunistring >=0,<1.0a0 size: 1433436 timestamp: 1626955018689 - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda @@ -8239,9 +7738,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libunwind >=1.8.3,<1.9.0a0 size: 75995 timestamp: 1757032240102 - conda: https://conda.anaconda.org/conda-forge/linux-64/liburcu-0.14.0-hac33072_0.conda @@ -8252,9 +7748,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - liburcu >=0.14.0,<0.15.0a0 size: 176874 timestamp: 1718888439831 - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda @@ -8267,9 +7760,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - liburing >=2.14,<2.15.0a0 size: 154203 timestamp: 1770566529700 - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda @@ -8281,25 +7771,19 @@ packages: - libudev1 >=257.4 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libusb >=1.0.29,<2.0a0 size: 89551 timestamp: 1748856210075 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f - md5: 01bb81d12c957de066ea7362007df642 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda + sha256: 3f0edf1280e2f6684a986f821eaa3e123d2694a00b31b96ca0d4a4c12c129231 + md5: 7d0a66598195ef00b6efc55aefc7453b depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libuuid >=2.42.2,<3.0a0 - size: 40017 - timestamp: 1781625522462 + size: 40163 + timestamp: 1779118517630 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda sha256: e28e4519223f78b3163599ca89c3f2d80bfb53e907e7fc74e806e60d1efa578b md5: 4e33d49bf4fc853855a3b00643aa5484 @@ -8309,9 +7793,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libuv >=1.52.1,<2.0a0 size: 419935 timestamp: 1779396012261 - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda @@ -8333,9 +7814,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libva >=2.23.0,<3.0a0 size: 221308 timestamp: 1765652453244 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda @@ -8351,9 +7829,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libvorbis >=1.3.7,<1.4.0a0 size: 285894 timestamp: 1753879378005 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.15.0-h54a6638_1.conda @@ -8369,9 +7844,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libvpl >=2.15.0,<2.16.0a0 size: 287944 timestamp: 1757278954789 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda @@ -8384,9 +7856,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libvpx >=1.15.2,<1.16.0a0 size: 1070048 timestamp: 1762010217363 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda @@ -8403,9 +7872,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 size: 199795 timestamp: 1770077125520 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda @@ -8419,9 +7885,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libwebp-base >=1.6.0,<2.0a0 size: 429011 timestamp: 1752159441324 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda @@ -8436,9 +7899,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxcb >=1.17.0,<2.0a0 size: 395888 timestamp: 1727278577118 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -8448,9 +7908,6 @@ packages: - libgcc-ng >=12 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libxcrypt >=4.4.36 size: 100393 timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda @@ -8468,9 +7925,6 @@ packages: license: MIT/X11 Derivative license_family: MIT purls: [] - run_exports: - weak: - - libxkbcommon >=1.13.2,<2.0a0 size: 851166 timestamp: 1780213397575 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda @@ -8488,7 +7942,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 559775 timestamp: 1776376739004 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda @@ -8505,10 +7958,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxml2 - - libxml2-16 >=2.15.3 size: 46810 timestamp: 1776376751152 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda @@ -8522,9 +7971,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxslt >=1.1.43,<2.0a0 size: 245434 timestamp: 1757963724977 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda @@ -8539,9 +7985,6 @@ packages: - __glibc >=2.17 license: Apache-2.0 OR EPL-2.0 purls: [] - run_exports: - weak: - - libzenohc >=1.7.2,<1.7.3.0a0 size: 4462657 timestamp: 1767984586418 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda @@ -8556,9 +7999,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libzip >=1.11.2,<2.0a0 size: 109043 timestamp: 1730442108429 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda @@ -8571,11 +8011,21 @@ packages: license: Zlib license_family: Other purls: [] - run_exports: - weak: - - libzlib >=1.3.2,<2.0a0 size: 63629 timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.7-h4922eb0_0.conda + sha256: 41941a6edc8358ec41617252cfec6b9e560cdfdf6d5a5c7d3c2562f43a3b66cb + md5: 362702bd1f3c1b06ba5908ff18ef6d8c + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 22.1.7|22.1.7.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 6119827 + timestamp: 1780455599472 - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 sha256: 31f9bf8dfa2a6f1eb1c47e48e57b7a2b0ef25d0df18741cc3e4abd0fe076bb1d md5: 6d6c59898d7a764ff90bb1147e234056 @@ -8584,9 +8034,6 @@ packages: - libstdcxx-ng >=12 license: Zlib purls: [] - run_exports: - weak: - - lodepng >=20220109,<20220110.0a0 size: 102103 timestamp: 1654538581172 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda @@ -8599,9 +8046,6 @@ packages: - liburcu >=0.14.0,<0.15.0a0 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - lttng-ust >=2.13.9,<2.14.0a0 size: 375355 timestamp: 1745310024643 - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda @@ -8619,7 +8063,6 @@ packages: license: BSD-3-Clause and MIT-CMU purls: - pkg:pypi/lxml?source=hash-mapping - run_exports: {} size: 1571628 timestamp: 1779194839109 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda @@ -8636,7 +8079,6 @@ packages: license_family: BSD purls: - pkg:pypi/lz4?source=hash-mapping - run_exports: {} size: 44154 timestamp: 1765026394687 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -8649,9 +8091,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - lz4-c >=1.10.0,<1.11.0a0 size: 167055 timestamp: 1733741040117 - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda @@ -8663,9 +8102,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - lzo >=2.10,<3.0a0 size: 191060 timestamp: 1753889274283 - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda @@ -8677,7 +8113,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: {} size: 513088 timestamp: 1727801714848 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda @@ -8694,28 +8129,25 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - run_exports: {} size: 26057 timestamp: 1772445297924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_0.conda - sha256: 0301737612197e3931a73858f642c38331e4906aa48227a29b7ba72c9c343678 - md5: 9ad541e75ff51cb70105c67324e418fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda + sha256: cdd59bb1a52b09979f11c68909d53120b2e749edd1992853a74e1604db19c8b0 + md5: 579c6a324b197594fabc9240bddf2d8b depends: - - matplotlib-base >=3.11.0,<3.11.1.0a0 + - matplotlib-base >=3.10.9,<3.10.10.0a0 - pyside6 >=6.7.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tornado >=5 license: PSF-2.0 license_family: PSF - purls: - - pkg:pypi/matplotlib?source=compressed-mapping - run_exports: {} - size: 14872 - timestamp: 1781626897041 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312h1c5ec97_0.conda - sha256: 4d5db0491814ce2e70053ae5ac9ecd0a4f7103adb6df0e6eb0dcb7638145e65b - md5: 847125fead148cb26f52f8c3413cea12 + purls: [] + size: 17831 + timestamp: 1777000588302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda + sha256: c7e133837376e53e6a52719c205a3067c42f05769bc3e8307417f8d817dfc63e + md5: 7d499b5b6d150f133800dc3a582771c7 depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -8726,7 +8158,6 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libraqm >=0.10.5,<0.11.0a0 - libstdcxx >=14 - numpy >=1.23 - numpy >=1.23,<3 @@ -8741,27 +8172,9 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=compressed-mapping - run_exports: {} - size: 9022139 - timestamp: 1781626880429 -- conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.14.1-py310h2b5ca13_0.conda - noarch: python - sha256: 33604a07d4d10f440fcc1e38d7d33462b3726565c1ad704ccfa189c7934912c6 - md5: 532b0a5340d4431bea91efe4792ceb13 - depends: - - python - - tomli >=1.1.0 - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.7,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - run_exports: {} - size: 9808111 - timestamp: 1781871513283 + - pkg:pypi/matplotlib?source=hash-mapping + size: 8336056 + timestamp: 1777000573501 - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda sha256: 3e6385e04e5a8f62599a5eb72b9a8c65ac143f0621d57f24688f103276d686eb md5: 823e4ae1d60e97845773f7358585fc56 @@ -8782,9 +8195,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - mesalib >=26.0.3,<26.1.0a0 size: 2964576 timestamp: 1773867966762 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda @@ -8797,14 +8207,11 @@ packages: license: LGPL-2.1-only license_family: LGPL purls: [] - run_exports: - weak: - - mpg123 >=1.32.9,<1.33.0a0 size: 491140 timestamp: 1730581373280 -- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312hd9148b4_0.conda - sha256: cb47e612ae50b589d6370eaacad826864894434515ac441898c790f635ba2c40 - md5: 7d3516af126c9f5330f31622350a443e +- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda + sha256: 94068fd39d1a672f8799e3146a18ba4ef553f0fcccefddb3c07fbdabfd73667a + md5: 2e489969e38f0b428c39492619b5e6e5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -8814,10 +8221,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/msgpack?source=compressed-mapping - run_exports: {} - size: 102104 - timestamp: 1782070372383 + - pkg:pypi/msgpack?source=hash-mapping + size: 102525 + timestamp: 1762504116832 - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-3.6.0-h1eba5cb_0.conda sha256: c08952543aa98f3f8e166912d0e84bd5ccec54d43ab382d9f06b98a995f78969 md5: e6ce1c14d07de1e193710bd60fcd64a9 @@ -8829,7 +8235,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 17818 timestamp: 1773254855824 - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-python-3.6.0-np2py312h2fcff2b_0.conda @@ -8863,7 +8268,6 @@ packages: license_family: APACHE purls: - pkg:pypi/mujoco?source=hash-mapping - run_exports: {} size: 3091314 timestamp: 1773254855824 - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-samples-3.6.0-h3c404ae_0.conda @@ -8879,7 +8283,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 54920 timestamp: 1773254855824 - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-simulate-3.6.0-h530d17e_0.conda @@ -8890,7 +8293,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 17682 timestamp: 1773254855824 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda @@ -8905,7 +8307,6 @@ packages: license_family: APACHE purls: - pkg:pypi/multidict?source=hash-mapping - run_exports: {} size: 100056 timestamp: 1771611023053 - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py312h4c3975b_0.conda @@ -8925,7 +8326,6 @@ packages: license_family: MIT purls: - pkg:pypi/mypy?source=hash-mapping - run_exports: {} size: 22035539 timestamp: 1776802000447 - conda: https://conda.anaconda.org/conda-forge/linux-64/nanoflann-1.6.1-hff21bea_0.conda @@ -8933,7 +8333,6 @@ packages: md5: acccd21b34ac988d1b26d15c53b28f65 license: BSD purls: [] - run_exports: {} size: 25915 timestamp: 1728332440211 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda @@ -8944,9 +8343,6 @@ packages: - libgcc >=14 license: X11 AND BSD-3-Clause purls: [] - run_exports: - weak: - - ncurses >=6.6,<7.0a0 size: 918956 timestamp: 1777422145199 - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h4a9d5aa_0.conda @@ -8958,9 +8354,6 @@ packages: - gmp >=6.3.0,<7.0a0 license: GPL-2.0-or-later OR LGPL-3.0-or-later purls: [] - run_exports: - weak: - - nettle >=3.10.1,<3.11.0a0 size: 1047686 timestamp: 1748012178395 - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda @@ -8973,7 +8366,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 186323 timestamp: 1763688260928 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda @@ -8984,7 +8376,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 136216 timestamp: 1758194284857 - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda @@ -8997,9 +8388,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - nspr >=4.38,<5.0a0 size: 228588 timestamp: 1762348634537 - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda @@ -9015,9 +8403,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - nss >=3.118,<4.0a0 size: 2057773 timestamp: 1763485556350 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -9037,9 +8422,6 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - run_exports: - weak: - - numpy >=1.26.4,<2.0a0 size: 7484186 timestamp: 1707225809722 - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda @@ -9052,9 +8434,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - ocl-icd >=2.3.4,<3.0a0 size: 109598 timestamp: 1780362789611 - conda: https://conda.anaconda.org/conda-forge/linux-64/octomap-1.10.0-h84d6215_0.conda @@ -9067,9 +8446,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - octomap >=1.10.0,<1.11.0a0 size: 234800 timestamp: 1728635293810 - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda @@ -9088,7 +8464,6 @@ packages: license: MIT AND BSL-1.0 purls: - pkg:pypi/onnxruntime?source=hash-mapping - run_exports: {} size: 15640884 timestamp: 1778967008489 - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda @@ -9101,7 +8476,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 55754 timestamp: 1773844383536 - conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda @@ -9115,28 +8489,24 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: {} size: 28422 timestamp: 1766495425558 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda - sha256: 17e3d2769dfc018748f0c09757b95744a5e942f74325b605d06303a69ee7955d - md5: 9db8aff65eaea058afc9fe93569b4b14 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.12-h9f1635d_0.conda + sha256: 9d75e4982065fb8a79b0f908f63d8a884db6d0f44abcecbbdb28eca35b01aa80 + md5: 705c195cdfe5c3b67e6e9b091fe7b602 depends: - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 - imath >=3.2.2,<3.2.3.0a0 - - openjph >=0.30.1,<0.31.0a0 - - libdeflate >=1.25,<1.26.0a0 + - openjph >=0.27.3,<0.28.0a0 - libzlib >=1.3.2,<2.0a0 + - libdeflate >=1.25,<1.26.0a0 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - openexr >=3.4.13,<3.5.0a0 - size: 1223929 - timestamp: 1782198396418 + size: 1220558 + timestamp: 1779680416588 - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747 md5: b28cf020fd2dead0ca6d113608683842 @@ -9147,9 +8517,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openh264 >=2.6.0,<2.6.1.0a0 size: 731471 timestamp: 1739400677213 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda @@ -9165,27 +8532,21 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openjpeg >=2.5.4,<3.0a0 size: 355400 timestamp: 1758489294972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda - sha256: e405a62cc16604c4274d1d64387fa62ba5466cc65fa087ae45451d0150f4b698 - md5: 6143d4af035262f7e1b954e1cba9156d +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.27.4-h8d634f6_0.conda + sha256: b4be74b706500c2f9471135b9a59a0d4325b999d992acf69ad0c598cfc5f9938 + md5: 6fb2763a192402111e655f420f1d88d7 depends: - - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - libtiff >=4.7.1,<4.8.0a0 license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openjph >=0.30.1,<0.31.0a0 - size: 294315 - timestamp: 1782091151122 + size: 283312 + timestamp: 1780596792557 - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda sha256: 21c4f6c7f41dc9bec2ea2f9c80440d9a4d45a6f2ac13243e658f10dcf1044146 md5: 680608784722880fbfe1745067570b00 @@ -9199,9 +8560,6 @@ packages: license: OLDAP-2.8 license_family: BSD purls: [] - run_exports: - weak: - - openldap >=2.6.13,<2.7.0a0 size: 786149 timestamp: 1775741359582 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda @@ -9214,9 +8572,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - openssl >=3.6.3,<4.0a0 size: 3159683 timestamp: 1781069855778 - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda @@ -9231,9 +8586,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - orocos-kdl >=1.5.3,<1.6.0a0 size: 387285 timestamp: 1778003898254 - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.2-h3435931_0.conda @@ -9247,9 +8599,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - p11-kit >=0.26.2,<0.27.0a0 size: 3831848 timestamp: 1770417713801 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda @@ -9271,9 +8620,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - pango >=1.56.4,<2.0a0 size: 458036 timestamp: 1774281947855 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.15.1-h717c489_7.conda @@ -9300,9 +8646,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcl >=1.15.1,<1.15.2.0a0 size: 17927710 timestamp: 1772142286027 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 @@ -9314,9 +8657,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcre >=8.45,<9.0a0 size: 259377 timestamp: 1623788789327 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda @@ -9330,9 +8670,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcre2 >=10.47,<10.48.0a0 size: 1222481 timestamp: 1763655398280 - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda @@ -9344,11 +8681,6 @@ packages: - libxcrypt >=4.4.36 license: GPL-1.0-or-later OR Artistic-1.0-Perl purls: [] - run_exports: - weak: - - perl >=5.32.1,<5.33.0a0 *_perl5 - noarch: - - perl >=5.32.1,<6.0a0 *_perl5 size: 13344463 timestamp: 1703310653947 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda @@ -9372,7 +8704,6 @@ packages: license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - run_exports: {} size: 1028547 timestamp: 1758208668856 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda @@ -9386,9 +8717,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - pixman >=0.46.4,<1.0a0 size: 450960 timestamp: 1754665235234 - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda @@ -9400,7 +8728,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 115175 timestamp: 1720805894943 - conda: https://conda.anaconda.org/conda-forge/linux-64/popt-1.19-h3b78370_0.conda @@ -9413,9 +8740,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - popt >=1.19,<2.0a0 size: 177450 timestamp: 1765445075774 - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.7.0-hf4617a5_0.conda @@ -9429,9 +8753,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - portaudio >=19.7.0,<19.8.0a0 size: 77342 timestamp: 1730364040048 - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda @@ -9452,9 +8773,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - proj >=9.7.1,<9.8.0a0 size: 3593669 timestamp: 1770890751115 - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py312h8a5da7c_0.conda @@ -9469,7 +8787,6 @@ packages: license_family: APACHE purls: - pkg:pypi/propcache?source=compressed-mapping - run_exports: {} size: 51586 timestamp: 1780037816755 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda @@ -9490,7 +8807,6 @@ packages: license_family: BSD purls: - pkg:pypi/protobuf?source=hash-mapping - run_exports: {} size: 479025 timestamp: 1760393393854 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda @@ -9505,7 +8821,6 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - run_exports: {} size: 225545 timestamp: 1769678155334 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -9517,7 +8832,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 8252 timestamp: 1726802366959 - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda @@ -9530,9 +8844,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - pugixml >=1.15,<1.16.0a0 size: 118488 timestamp: 1736601364156 - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-17.0-haebf07f_3.conda @@ -9546,9 +8857,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - pulseaudio-client >=17.0,<17.1.0a0 size: 18408 timestamp: 1763148313744 - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda @@ -9568,9 +8876,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - pulseaudio-client >=17.0,<17.1.0a0 size: 750785 timestamp: 1763148198088 - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-daemon-17.0-h33dcb6b_3.conda @@ -9603,9 +8908,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - pulseaudio-daemon >=17.0,<17.1.0a0 size: 876199 timestamp: 1763148300906 - conda: https://conda.anaconda.org/conda-forge/linux-64/py-opencv-4.12.0-qt6_py312h598be00_612.conda @@ -9620,9 +8922,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - py-opencv >=4.12.0,<5.0a0 size: 1154634 timestamp: 1766495407579 - conda: https://conda.anaconda.org/conda-forge/linux-64/pybullet-3.25-py312hf49885f_5.conda @@ -9640,7 +8939,6 @@ packages: license: Zlib purls: - pkg:pypi/pybullet?source=hash-mapping - run_exports: {} size: 62838622 timestamp: 1761041325516 - conda: https://conda.anaconda.org/conda-forge/linux-64/pycairo-1.29.0-py312h2596900_1.conda @@ -9657,7 +8955,6 @@ packages: license: LGPL-2.1-only OR MPL-1.1 purls: - pkg:pypi/pycairo?source=hash-mapping - run_exports: {} size: 119839 timestamp: 1770726341594 - conda: https://conda.anaconda.org/conda-forge/linux-64/pymongo-4.17.0-py312h1289d80_0.conda @@ -9674,7 +8971,6 @@ packages: license_family: APACHE purls: - pkg:pypi/pymongo?source=hash-mapping - run_exports: {} size: 2400390 timestamp: 1776765918970 - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_2.conda @@ -9692,7 +8988,6 @@ packages: license_family: Apache purls: - pkg:pypi/pynacl?source=hash-mapping - run_exports: {} size: 1180950 timestamp: 1778984876791 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.11-py312h82c0db2_2.conda @@ -9726,9 +9021,6 @@ packages: license_family: GPL purls: - pkg:pypi/pyqt5?source=hash-mapping - run_exports: - weak: - - pyqt >=5.15.11,<5.16.0a0 size: 5282965 timestamp: 1759498005783 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.17.0-py312h1289d80_2.conda @@ -9747,7 +9039,6 @@ packages: license_family: GPL purls: - pkg:pypi/pyqt5-sip?source=hash-mapping - run_exports: {} size: 85800 timestamp: 1759495565076 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h50ac2ff_3.conda @@ -9774,7 +9065,6 @@ packages: purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - run_exports: {} size: 13398482 timestamp: 1778394766609 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda @@ -9802,44 +9092,8 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python size: 32286118 timestamp: 1703320043028 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda - sha256: a44655c1c3e1d43ed8704890a91e12afd68130414ea2c0872e154e5633a13d7e - md5: 7eccb41177e15cc672e1babe9056018e - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.4,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python - size: 31608571 - timestamp: 1772730708989 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.11.0-py312h5253ce2_0.conda sha256: 6aa36a62db36c2aa144640a3fba1cd3c61dd679a979288eae2fd3b9f89ef4eac md5: 0a73899771633857390eac009995e5f9 @@ -9852,7 +9106,6 @@ packages: license_family: MIT purls: - pkg:pypi/librt?source=hash-mapping - run_exports: {} size: 157857 timestamp: 1778511616936 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_2.conda @@ -9870,9 +9123,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - python-orocos-kdl >=1.5.3,<1.6.0a0 size: 356677 timestamp: 1778045760532 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda @@ -9888,7 +9138,6 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - run_exports: {} size: 198293 timestamp: 1770223620706 - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda @@ -9900,9 +9149,6 @@ packages: - libstdcxx-ng >=12 license: LicenseRef-Qhull purls: [] - run_exports: - weak: - - qhull >=2020.2,<2020.3.0a0 size: 552937 timestamp: 1720813982144 - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.15-h0c412b5_8.conda @@ -9963,9 +9209,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - qt-main >=5.15.15,<5.16.0a0 size: 52674357 timestamp: 1773957808615 - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-pl5321h16c4a6b_6.conda @@ -10040,9 +9283,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - qt6-main >=6.10.2,<6.11.0a0 size: 58118322 timestamp: 1773865930316 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda @@ -10056,7 +9296,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 156074 timestamp: 1742820732296 - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.8.1-h1fbca29_0.conda @@ -10070,9 +9309,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - rav1e >=0.8.1,<0.9.0a0 size: 5595970 timestamp: 1772540833621 - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.5.9-py312h4c3975b_0.conda @@ -10087,7 +9323,6 @@ packages: license_family: PSF purls: - pkg:pypi/regex?source=hash-mapping - run_exports: {} size: 411061 timestamp: 1778374143589 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda @@ -10099,9 +9334,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - rhash >=1.4.6,<2.0a0 size: 193775 timestamp: 1748644872902 - conda: https://conda.anaconda.org/conda-forge/linux-64/rsync-3.4.4-h5440a77_0.conda @@ -10120,7 +9352,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 376631 timestamp: 1780999334789 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda @@ -10142,9 +9373,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - ruby >=4.0.5,<4.1.0a0 size: 17204486 timestamp: 1779257270967 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda @@ -10161,26 +9389,8 @@ packages: license_family: MIT purls: - pkg:pypi/ruff?source=hash-mapping - run_exports: {} size: 9131490 timestamp: 1769520999080 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - sha256: fb5d544cac6a15ddbc7c47fddc812407713fd220f64716928f0ccf13c8655de4 - md5: 5a2d92eacdea9d7ffb895c3fd9c761e6 - depends: - - __glibc >=2.17,<3.0.a0 - - gcc_impl_linux-64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.91.1 h2c6d0dc_0 - - sysroot_linux-64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 232940165 - timestamp: 1762816703243 - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda sha256: d084a53a1ce2cea8d6f9cf45108e516a629118dd3f8fb3113d87d1dcd3eea669 md5: 5b80270d422d9fddf028cb4ce68370b2 @@ -10193,26 +9403,9 @@ packages: - sysroot_linux-64 >=2.17 license: MIT license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 + purls: [] size: 171986391 timestamp: 1780046427552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.96.0-hd58cd63_0.conda - sha256: 5658a122375e3733c53cb9fbd107626f623b5931b0905fc5f72d36ee83fe37f8 - md5: 4172c3ed0c0c8aa610b7d279dc699046 - depends: - - gcc_linux-64 - - rust 1.96.0.* - - rust-std-x86_64-unknown-linux-gnu 1.96.0.* - - sysroot_linux-64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11780 - timestamp: 1780932798351 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda sha256: d5ac05ad45c0d48731eb189c2cbb2bb99f0e3cb7e1acaad373cb2f1f2597fc75 md5: 15995ecb2ef890778ba9a3750190f09d @@ -10234,7 +9427,6 @@ packages: license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - run_exports: {} size: 16828243 timestamp: 1779874781187 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda @@ -10246,9 +9438,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libsdformat14 >=14.8.0,<15.0a0 size: 14078 timestamp: 1759339825312 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda @@ -10269,7 +9458,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 680439 timestamp: 1759339825312 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda @@ -10284,9 +9472,6 @@ packages: - libegl >=1.7.0,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - sdl2 >=2.32.56,<3.0a0 size: 589145 timestamp: 1757842881000 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.10-hdeec2a5_0.conda @@ -10317,9 +9502,6 @@ packages: - libudev1 >=257.13 license: Zlib purls: [] - run_exports: - weak: - - sdl3 >=3.4.10,<4.0a0 size: 2148830 timestamp: 1780262823658 - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2025.5-h718be3e_1.conda @@ -10334,9 +9516,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - shaderc >=2025.5,<2025.6.0a0 size: 113513 timestamp: 1770208767759 - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.10.0-py312h1289d80_1.conda @@ -10356,9 +9535,6 @@ packages: license_family: BSD purls: - pkg:pypi/sip?source=hash-mapping - run_exports: - weak: - - sip >=6.10.0,<6.11.0a0 size: 680892 timestamp: 1759437964748 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda @@ -10372,9 +9548,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - snappy >=1.2.2,<1.3.0a0 size: 45829 timestamp: 1762948049098 - conda: https://conda.anaconda.org/conda-forge/linux-64/soxr-0.1.3-h0b41bf4_3.conda @@ -10385,9 +9558,6 @@ packages: - libgcc-ng >=12 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - soxr >=0.1.3,<0.1.4.0a0 size: 131370 timestamp: 1674059502792 - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hab81395_1.conda @@ -10401,9 +9571,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - spdlog >=1.17.0,<1.18.0a0 size: 196681 timestamp: 1767781665629 - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda @@ -10418,9 +9585,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - spirv-tools >=2026,<2027.0a0 size: 2392190 timestamp: 1780139567779 - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.2-hbc0de68_0.conda @@ -10435,9 +9599,6 @@ packages: - readline >=8.3,<9.0a0 license: blessing purls: [] - run_exports: - weak: - - libsqlite >=3.53.2,<4.0a0 size: 205545 timestamp: 1780574435288 - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda @@ -10450,9 +9611,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - svt-av1 >=4.0.1,<4.0.2.0a0 size: 2619743 timestamp: 1769664536467 - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda @@ -10466,7 +9624,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 182331 timestamp: 1778673758649 - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda @@ -10478,9 +9635,6 @@ packages: - libstdcxx >=14 - tbb 2023.0.0 hab88423_2 purls: [] - run_exports: - weak: - - tbb >=2023.0.0 size: 1139342 timestamp: 1778673771784 - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda @@ -10493,9 +9647,6 @@ packages: - libgcc >=13 license: Zlib purls: [] - run_exports: - weak: - - tinyxml2 >=11.0.0,<11.1.0a0 size: 131351 timestamp: 1742246125630 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda @@ -10510,9 +9661,6 @@ packages: license: TCL license_family: BSD purls: [] - run_exports: - weak: - - tk >=8.6.13,<8.7.0a0 size: 3301196 timestamp: 1769460227866 - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py312h4c3975b_0.conda @@ -10527,7 +9675,6 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=compressed-mapping - run_exports: {} size: 864705 timestamp: 1781006801632 - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda @@ -10544,7 +9691,6 @@ packages: license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - run_exports: {} size: 14882 timestamp: 1769438717830 - conda: https://conda.anaconda.org/conda-forge/linux-64/uncrustify-0.83.0-h54a6638_0.conda @@ -10557,7 +9703,6 @@ packages: license: GPL-2.0-only license_family: GPL purls: [] - run_exports: {} size: 748418 timestamp: 1779015692186 - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda @@ -10572,7 +9717,6 @@ packages: license_family: Apache purls: - pkg:pypi/unicodedata2?source=hash-mapping - run_exports: {} size: 410641 timestamp: 1770909099497 - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom-4.0.1-h8631160_4.conda @@ -10588,10 +9732,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - urdfdom_headers >=1.1.2,<2.0a0 - - urdfdom >=4.0.1,<4.1.0a0 size: 119237 timestamp: 1771238079259 - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom-py-1.2.1-py312h200335b_6.conda @@ -10606,7 +9746,6 @@ packages: license_family: BSD purls: - pkg:pypi/urdfdom-py?source=hash-mapping - run_exports: {} size: 48834 timestamp: 1756847352648 - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom_headers-1.1.2-h84d6215_0.conda @@ -10619,7 +9758,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 19201 timestamp: 1726152409175 - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda @@ -10627,22 +9765,8 @@ packages: md5: 99884244028fe76046e3914f90d4ad05 license: BSL-1.0 purls: [] - run_exports: {} size: 14226 timestamp: 1767012219987 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.24-h26efc2c_0.conda - sha256: 3f3909e6c621031a6760f5f2de7017abcda19443fd902209adac9c09cef23fb0 - md5: 06bb4f32ead6e726690001ac8575a43b - depends: - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 19933397 - timestamp: 1782258135936 - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda sha256: 2ebe8d6ae8c302ca5bf4aec532cd75ebfb00240db1c14dad9a91bace65aa083d md5: 24676eb7fd23ea3d8d69417f5f1224e0 @@ -10660,9 +9784,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - viskores >=1.1.1,<1.2.0a0 size: 25058279 timestamp: 1777494673829 - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda @@ -10682,9 +9803,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - vtk-base >=9.5.2,<9.5.3.0a0 size: 25585 timestamp: 1768718074243 - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda @@ -10740,9 +9858,6 @@ packages: license_family: BSD purls: - pkg:pypi/vtk?source=hash-mapping - run_exports: - weak: - - vtk-base >=9.5.2,<9.5.3.0a0 size: 68877621 timestamp: 1768718074241 - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda @@ -10756,9 +9871,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - vtk-io-ffmpeg >=9.5.2,<9.5.3.0a0 size: 108379 timestamp: 1768718074243 - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda @@ -10773,14 +9885,11 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - wayland >=1.25.0,<2.0a0 size: 334139 timestamp: 1773959575393 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda - sha256: 64ae5393d36cc553bcf05d3afbb42aef28b3d1fa986ed5c9358cd32d785940b7 - md5: 8555a1457e54a2b96093140db1b4b28b +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py312h4c3975b_0.conda + sha256: 3d36b297c5f0c1ab0e598760f0033377334a3bfb5c12f4129c2abcb884e2d632 + md5: a4d41bb00f252b99b4b903b3a8fa3ecc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -10789,10 +9898,9 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/wrapt?source=compressed-mapping - run_exports: {} - size: 115842 - timestamp: 1782133640094 + - pkg:pypi/wrapt?source=hash-mapping + size: 114800 + timestamp: 1779477451511 - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 md5: 6c99772d483f566d59e25037fea2c4b1 @@ -10801,9 +9909,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - x264 >=1!164.3095,<1!165 size: 897548 timestamp: 1660323080555 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 @@ -10815,9 +9920,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - x265 >=3.5,<3.6.0a0 size: 3357188 timestamp: 1646609687141 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda @@ -10830,9 +9932,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util >=0.4.1,<0.5.0a0 size: 20772 timestamp: 1750436796633 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda @@ -10848,9 +9947,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-cursor >=0.1.6,<0.2.0a0 size: 20829 timestamp: 1763366954390 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda @@ -10863,9 +9959,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-image >=0.4.0,<0.5.0a0 size: 24551 timestamp: 1718880534789 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda @@ -10877,9 +9970,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-keysyms >=0.4.1,<0.5.0a0 size: 14314 timestamp: 1718846569232 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda @@ -10891,9 +9981,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-renderutil >=0.3.10,<0.4.0a0 size: 16978 timestamp: 1718848865819 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda @@ -10905,24 +9992,20 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-wm >=0.4.2,<0.5.0a0 size: 51689 timestamp: 1718844051451 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda - sha256: 3b04afd5d1a65d2d27ac2d49a63b01ab8bcd875776779ec63e337370ed38afdc - md5: b233b41be0bf210989d57160ed39b394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda + sha256: 19c2bb14bec84b0e995b56b752369775c75f1589314b43733948bb5f471a6915 + md5: b56e0c8432b56decafae7e78c5f29ba5 depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - xorg-libx11 >=1.8.13,<2.0a0 license: MIT license_family: MIT purls: [] - run_exports: {} - size: 441670 - timestamp: 1782027360439 + size: 399291 + timestamp: 1772021302485 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -10932,9 +10015,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libice >=1.1.2,<2.0a0 size: 58628 timestamp: 1734227592886 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda @@ -10948,9 +10028,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libsm >=1.2.6,<2.0a0 size: 27590 timestamp: 1741896361728 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda @@ -10963,9 +10040,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libx11 >=1.8.13,<2.0a0 size: 839652 timestamp: 1770819209719 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda @@ -10977,9 +10051,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxau >=1.0.12,<2.0a0 size: 15321 timestamp: 1762976464266 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.16-hb9d3cd8_0.conda @@ -10996,7 +10067,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 307032 timestamp: 1727870272246 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda @@ -11010,9 +10080,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxcomposite >=0.4.7,<1.0a0 size: 14415 timestamp: 1770044404696 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda @@ -11027,9 +10094,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxcursor >=1.2.3,<2.0a0 size: 32533 timestamp: 1730908305254 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda @@ -11044,9 +10108,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxdamage >=1.1.6,<2.0a0 size: 13217 timestamp: 1727891438799 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda @@ -11058,9 +10119,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxdmcp >=1.1.5,<2.0a0 size: 20591 timestamp: 1762976546182 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda @@ -11073,9 +10131,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxext >=1.3.7,<2.0a0 size: 50326 timestamp: 1769445253162 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda @@ -11088,9 +10143,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxfixes >=6.0.2,<7.0a0 size: 20071 timestamp: 1759282564045 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.conda @@ -11105,9 +10157,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxi >=1.8.3,<2.0a0 size: 47717 timestamp: 1779111857071 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda @@ -11122,9 +10171,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxinerama >=1.1.6,<1.2.0a0 size: 14818 timestamp: 1769432261050 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.3.1-hb03c661_0.conda @@ -11139,9 +10185,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxmu >=1.3.1,<2.0a0 size: 90301 timestamp: 1769675723651 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxpm-3.5.19-hb03c661_0.conda @@ -11159,9 +10202,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxpm >=3.5.19,<4.0a0 size: 64386 timestamp: 1776789976572 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda @@ -11176,9 +10216,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxrandr >=1.5.5,<2.0a0 size: 30456 timestamp: 1769445263457 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda @@ -11191,9 +10228,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxrender >=0.9.12,<0.10.0a0 size: 33005 timestamp: 1734229037766 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda @@ -11207,9 +10241,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxscrnsaver >=1.2.4,<2.0a0 size: 14412 timestamp: 1727899730073 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxshmfence-1.3.3-hb9d3cd8_0.conda @@ -11221,9 +10252,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxshmfence >=1.3.3,<2.0a0 size: 12302 timestamp: 1734168591429 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda @@ -11238,9 +10266,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxt >=1.3.1,<2.0a0 size: 379686 timestamp: 1731860547604 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda @@ -11255,9 +10280,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxtst >=1.2.5,<2.0a0 size: 32808 timestamp: 1727964811275 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda @@ -11271,9 +10293,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxxf86vm >=1.1.7,<2.0a0 size: 18701 timestamp: 1769434732453 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda @@ -11285,7 +10304,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 570010 timestamp: 1766154256151 - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda @@ -11297,9 +10315,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - xxhash >=0.8.3,<0.8.4.0a0 size: 108219 timestamp: 1746457673761 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda @@ -11314,9 +10329,6 @@ packages: - xz-tools 5.8.3 hb03c661_0 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 24360 timestamp: 1775825568523 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda @@ -11330,9 +10342,6 @@ packages: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 34213 timestamp: 1775825548743 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda @@ -11346,7 +10355,6 @@ packages: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later purls: [] - run_exports: {} size: 95955 timestamp: 1775825530484 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda @@ -11358,9 +10366,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - yaml >=0.2.5,<0.3.0a0 size: 85189 timestamp: 1753484064210 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda @@ -11374,9 +10379,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - yaml-cpp >=0.8.0,<0.9.0a0 size: 223526 timestamp: 1745307989800 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py312h8a5da7c_0.conda @@ -11394,7 +10396,6 @@ packages: license_family: Apache purls: - pkg:pypi/yarl?source=hash-mapping - run_exports: {} size: 155061 timestamp: 1779246264888 - conda: https://conda.anaconda.org/conda-forge/linux-64/zenoh-rust-abi-1.7.2.1.85.0-h8619998_0.conda @@ -11406,9 +10407,6 @@ packages: - __glibc >=2.17 license: Apache-2.0 OR EPL-2.0 purls: [] - run_exports: - weak: - - zenoh-rust-abi >=1.7.2.1.85.0,<1.7.2.1.85.1.0a0 size: 49012 timestamp: 1767949916856 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda @@ -11423,9 +10421,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - zeromq >=4.3.5,<4.4.0a0 size: 311184 timestamp: 1779123989774 - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda @@ -11439,9 +10434,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - zfp >=1.0.1,<2.0a0 size: 277694 timestamp: 1766549572069 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda @@ -11453,9 +10445,6 @@ packages: license: Zlib license_family: Other purls: [] - run_exports: - weak: - - libzlib >=1.3.2,<2.0a0 size: 95931 timestamp: 1774072620848 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda @@ -11467,9 +10456,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - zstd >=1.5.7,<1.6.0a0 size: 601375 timestamp: 1764777111296 - conda: https://conda.anaconda.org/conda-forge/linux-64/zziplib-0.13.69-he45264a_2.conda @@ -11480,9 +10466,6 @@ packages: - libzlib >=1.3.1,<2.0a0 license: LGPL-2.0-or-later OR MPL-1.1 purls: [] - run_exports: - weak: - - zziplib >=0.13.69,<0.14.0a0 size: 106915 timestamp: 1719242059793 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda @@ -11496,9 +10479,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - _openmp_mutex >=4.5 size: 28926 timestamp: 1770939656741 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adwaita-icon-theme-3.38.0-h2d234d2_1.tar.bz2 @@ -11510,7 +10490,6 @@ packages: license: LGPL-3.0-or-later OR CC-BY-SA-3.0 license_family: LGPL purls: [] - run_exports: {} size: 11238327 timestamp: 1610490614592 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda @@ -11533,22 +10512,18 @@ packages: license_family: Apache purls: - pkg:pypi/aiohttp?source=hash-mapping - run_exports: {} size: 1068919 timestamp: 1780913451554 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda - sha256: 105e4c19cfa770affcb9a64b9d2451f406914cd09a67664009910869fa01a639 - md5: 5427b5dcb268bddf1a69c16d1cb77a47 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16-he30d5cf_0.conda + sha256: 722a24bb4a2faabcedf694ae494393e6f9b698dddbf0782fb0dcd7bfcc0c2027 + md5: 20e118f10dc11b6b2383ae7c1f2c8e8c depends: - libgcc >=14 license: LGPL-2.1-or-later - license_family: LGPL + license_family: GPL purls: [] - run_exports: - weak: - - alsa-lib >=1.2.16.1,<1.3.0a0 - size: 621865 - timestamp: 1781522013595 + size: 619180 + timestamp: 1780398750941 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-plugins-1.2.12-haf9f4a6_2.conda sha256: e03e48f4fd5bbd7523b03cdcc803a5654f132fc561e422e2cc2903c883ee0ce1 md5: bf0fa9c73d93fc6b499a4059e82c5aa5 @@ -11561,7 +10536,6 @@ packages: license: LGPL-2.1-or-later AND GPL-3.0-or-later license_family: LGPL purls: [] - run_exports: {} size: 264427 timestamp: 1756137068124 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda @@ -11573,9 +10547,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - aom >=3.9.1,<3.10.0a0 size: 3250813 timestamp: 1718551360260 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/assimp-5.4.3-he8c3857_1.conda @@ -11590,9 +10561,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - assimp >=5.4.3,<5.4.4.0a0 size: 3572443 timestamp: 1753274717951 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/at-spi2-atk-2.38.0-h1f2db35_3.tar.bz2 @@ -11607,9 +10575,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - at-spi2-atk >=2.38.0,<3.0a0 size: 322172 timestamp: 1619123713021 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/at-spi2-core-2.40.3-h1f2db35_0.tar.bz2 @@ -11625,9 +10590,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - at-spi2-core >=2.40.3,<2.41.0a0 size: 622407 timestamp: 1625848355776 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda @@ -11642,9 +10604,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - atk-1.0 >=2.38.0 size: 358327 timestamp: 1713898303194 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.2-he30d5cf_1.conda @@ -11656,25 +10615,21 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libattr >=2.5.2,<2.6.0a0 size: 33708 timestamp: 1773595939135 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.6.0-py312ha46dd1d_0.conda - sha256: dfe925314fd594cd6cefa78d79df8bc6898a3848460db346b87597f77df8442c - md5: 19c1ea1ad92760d8e465a371a40ca125 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.5.0-py312ha46dd1d_0.conda + sha256: 0c6fcd7ee0d3defcd279f9a144e9d56fe7d100d6a4749c0d0bd5faa302a54a43 + md5: 4e6cc4fee8896183d0bd2b5f32c3d1b5 depends: - python - libgcc >=14 - - python_abi 3.12.* *_cp312 - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause AND MIT AND EPL-2.0 purls: - pkg:pypi/backports-zstd?source=hash-mapping - run_exports: {} - size: 241556 - timestamp: 1781450814407 + size: 241317 + timestamp: 1778594051531 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda sha256: 682dea63cb655efe2e12dc63062f5c719df66d15d98a511b2936b5424b2f4cde md5: 70d8f4f204a16e346871ba4c22a7886e @@ -11689,7 +10644,6 @@ packages: license_family: APACHE purls: - pkg:pypi/bcrypt?source=hash-mapping - run_exports: {} size: 297613 timestamp: 1762497725874 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/benchmark-1.9.5-hfae3067_0.conda @@ -11701,7 +10655,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: {} size: 279762 timestamp: 1769117024546 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda @@ -11712,7 +10665,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 35511 timestamp: 1774197558632 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda @@ -11725,7 +10677,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 4683754 timestamp: 1774197535605 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda @@ -11736,7 +10687,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 36267 timestamp: 1774197561368 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda @@ -11752,9 +10702,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - blosc >=1.21.6,<2.0a0 size: 36414 timestamp: 1733513501944 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.2.0-hd651790_1.conda @@ -11768,11 +10715,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlicommon >=1.2.0,<1.3.0a0 - - libbrotlienc >=1.2.0,<1.3.0a0 - - libbrotlidec >=1.2.0,<1.3.0a0 size: 20145 timestamp: 1764017310011 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.2.0-he30d5cf_1.conda @@ -11785,7 +10727,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 20758 timestamp: 1764017301339 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py312hac7b6a9_1.conda @@ -11803,7 +10744,6 @@ packages: license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - run_exports: {} size: 373800 timestamp: 1764017545385 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-3.25-h6ffa558_5.conda @@ -11816,7 +10756,6 @@ packages: - python license: Zlib purls: [] - run_exports: {} size: 11685 timestamp: 1761046730469 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-cpp-3.25-py312he7881e2_5.conda @@ -11833,9 +10772,6 @@ packages: - xorg-libxext >=1.3.6,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - bullet-cpp >=3.25,<3.26.0a0 size: 42319979 timestamp: 1761046342434 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda @@ -11846,9 +10782,6 @@ packages: license: bzip2-1.0.6 license_family: BSD purls: [] - run_exports: - weak: - - bzip2 >=1.0.8,<2.0a0 size: 192412 timestamp: 1771350241232 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda @@ -11859,9 +10792,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - c-ares >=1.34.6,<2.0a0 size: 217215 timestamp: 1765214743735 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda @@ -11874,7 +10804,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6721 timestamp: 1753098688332 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda @@ -11901,9 +10830,6 @@ packages: - xorg-libxrender >=0.9.12,<0.10.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - run_exports: - weak: - - cairo >=1.18.4,<2.0a0 size: 927045 timestamp: 1766416003626 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda @@ -11918,7 +10844,6 @@ packages: license_family: MIT purls: - pkg:pypi/cbor2?source=hash-mapping - run_exports: {} size: 121651 timestamp: 1775229767017 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda @@ -11934,9 +10859,37 @@ packages: license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - run_exports: {} size: 315113 timestamp: 1761203960926 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_he95a3c9_4.conda + sha256: c95c3997b68ddada376d068e5e79ef1d290b331cfe0e3d197148fdc77401e057 + md5: d6465722f92006b1d5e0f1bc6c4fabd1 + depends: + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_he95a3c9_4 + - libgcc >=14 + - libllvm21 >=21.1.8,<21.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 833689 + timestamp: 1777011760822 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h99ebb92_4.conda + sha256: bb9c309bd0547237b2b8b1894234873a79e6ae2e871f37597b760cf9a8298606 + md5: 0043dfe9061ae4b7abf76006f5b718b0 + depends: + - binutils + - clang-21 21.1.8 default_he95a3c9_4 + - clang_impl_linux-aarch64 21.1.8 default_h1168dbd_4 + - libgcc-devel_linux-aarch64 + - llvm-openmp >=21.1.8 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28670 + timestamp: 1777011839372 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda sha256: 91f8d60dddf73c116c98765fc577b1da0b6c00ea02ded5e69858f0bd5571e96d md5: c80a4bcad92f178e0799ac5a38c4bd93 @@ -11948,7 +10901,6 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: {} size: 72089 timestamp: 1777012007789 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda @@ -11963,9 +10915,23 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: {} size: 28754 timestamp: 1777012040719 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h1168dbd_4.conda + sha256: 6b48ee394cf0c7534d5d016234a630f566aff71ebc7a83b1e228c81fc74cdfd4 + md5: aff9265bb6a9b18607a3af5d4a2475a0 + depends: + - binutils_impl_linux-aarch64 + - clang-21 21.1.8 default_he95a3c9_4 + - compiler-rt 21.1.8.* + - compiler-rt_linux-aarch64 21.1.8.* + - libgcc-devel_linux-aarch64 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 28102 + timestamp: 1777011828305 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda sha256: a52d45824f7358e7d4abee36abcf9ae298523e8548e98899b5a317dd7cb2a685 md5: 4728e6e898f6af8dc024db1f66a2a50f @@ -11975,7 +10941,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 99015 timestamp: 1772207983869 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda @@ -11996,7 +10961,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 18297625 timestamp: 1718668828575 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda @@ -12029,7 +10993,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-common-extensions?source=hash-mapping - run_exports: {} size: 13497 timestamp: 1759758075816 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda @@ -12045,9 +11008,33 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-notification?source=hash-mapping - run_exports: {} size: 86300 timestamp: 1774664660377 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + sha256: 253ad41782ffc1233708562244c388e98ec308001df1e7f26ac683e40ae327ef + md5: 43127a9573ab35af9cdec80696c8fb82 + depends: + - compiler-rt21 21.1.8 hfefdfc9_1 + - libcompiler-rt 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16241 + timestamp: 1769057250596 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda + sha256: 1fad0358b97eaf52cb58fe217179ce79d0c1b18f5e134e9fc64916a3b889da5f + md5: 76138625931230d58183cf517abf8e15 + depends: + - compiler-rt21_linux-aarch64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 114447 + timestamp: 1769057249190 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda sha256: 7713d1af8c67d3052e2fb0a9d12cb6098210342995e5db4fd70fc9aae0630465 md5: 10cfd53906b539dc866c79f5837ab577 @@ -12058,20 +11045,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 7575 timestamp: 1753098689062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - sha256: 10c8b60befb95c62662821b381f4bb0fa9b7108bdff9bc0971043d5b7f88cda1 - md5: a1123d27b812e311753af9b5987cf401 - depends: - - gcc_impl_linux-aarch64 >=14.3.0,<14.3.1.0a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - run_exports: {} - size: 31704 - timestamp: 1778268711052 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 sha256: 3155a52cb046da65ba7afc8f9b4e6c54881fe511a56b3517b8b4fbd42607b088 md5: 87cedc27ed44d7bda9cb29a6294dfe04 @@ -12081,9 +11056,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - console_bridge >=1.0.2,<1.1.0a0 size: 18484 timestamp: 1648912662150 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py312hf18b547_4.conda @@ -12100,12 +11072,11 @@ packages: license_family: BSD purls: - pkg:pypi/contourpy?source=hash-mapping - run_exports: {} size: 339097 timestamp: 1769155976173 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.3-py312hd077ced_0.conda - sha256: f34502e517964cae1f275f0916e008e683e779c469167361bfe37e1318d95bc8 - md5: 8c6e320e532c4117e6b12bb11b55559a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.14.1-py312hd077ced_0.conda + sha256: 9079de8b96c433468f33eb2eb89539e785a564f122ce62a4f1d716f0295edf1c + md5: 803aee59c5fc81cefd35d10dcfca9dc0 depends: - libgcc >=14 - python >=3.12,<3.13.0a0 @@ -12115,9 +11086,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - run_exports: {} - size: 395819 - timestamp: 1782179124827 + size: 390698 + timestamp: 1779839029690 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda sha256: 6540f7d961f6703bab10319cf556db180d00c309575fc64436c7316b3f019682 md5: 6f4302389e8a90b3ca9b1a3c55a80c4a @@ -12134,7 +11104,6 @@ packages: license_family: GPL purls: - pkg:pypi/cppcheck-htmlreport?source=hash-mapping - run_exports: {} size: 2923791 timestamp: 1757440286496 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppzmq-4.11.0-h7be3492_0.conda @@ -12147,16 +11116,15 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 30681 timestamp: 1763728975675 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - sha256: 6220d057368612e916d265c9eb7cffe65276143bff699aa4120bc14a7ed90ff6 - md5: 8f48b1cbdb64a64e42ee382bed75601a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-48.0.1-py312h96535df_0.conda + sha256: 6bf5488ec0824f7853190af4d3f5e5d3798188653ab8a646df1bcf824a155bd3 + md5: bbbf8cfe13d3b6f47b38b6a095e0a864 depends: - cffi >=2.0 - libgcc >=14 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: @@ -12165,26 +11133,24 @@ packages: license_family: BSD purls: - pkg:pypi/cryptography?source=hash-mapping - run_exports: {} - size: 1962389 - timestamp: 1781385371022 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-hc57f145_0.conda - sha256: ee884996b452e82b4c0ac775c935c0447a7080bbd1c631c6d19420077ecb6574 - md5: f3e75a64e00320bda6a2201c5a628669 + size: 1956722 + timestamp: 1781060845411 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.20.0-hc57f145_0.conda + sha256: 7812bfa95c64f6900deff0d26091599a969b216b9bec1c3156f974cf060e5ca7 + md5: bf7d70846cc20c1bfdc229784c615103 depends: - krb5 >=1.22.2,<1.23.0a0 - - libcurl 8.21.0 hc57f145_0 + - libcurl 8.20.0 hc57f145_0 - libgcc >=14 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] - run_exports: {} - size: 201443 - timestamp: 1782296550578 + size: 197100 + timestamp: 1777461491381 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda sha256: b87cd33501867d999caa1a57e488e69dc9e08011ec8685586df754302247a7a4 md5: 0234c63e6b36b1677fd6c5238ef0a4ec @@ -12195,7 +11161,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6705 timestamp: 1753098688728 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda @@ -12211,9 +11176,6 @@ packages: license: BSD-3-Clause-Attribution license_family: BSD purls: [] - run_exports: - weak: - - cyrus-sasl >=2.1.28,<3.0a0 size: 224450 timestamp: 1771943147365 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda @@ -12224,9 +11186,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - dav1d >=1.2.1,<1.2.2.0a0 size: 347363 timestamp: 1685696690003 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.16.2-h70963c4_1.conda @@ -12240,9 +11199,6 @@ packages: - libexpat >=2.7.3,<3.0a0 license: AFL-2.1 OR GPL-2.0-or-later purls: [] - run_exports: - weak: - - dbus >=1.16.2,<2.0a0 size: 480416 timestamp: 1764536098891 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.3.2-py312hf371ade_6.conda @@ -12259,7 +11215,6 @@ packages: license_family: MIT purls: - pkg:pypi/dbus-python?source=hash-mapping - run_exports: {} size: 139771 timestamp: 1759741064708 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.4.0-hfae3067_0.conda @@ -12271,9 +11226,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - double-conversion >=3.4.0,<3.5.0a0 size: 71905 timestamp: 1765194538141 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h7ac5ae9_2.conda @@ -12285,7 +11237,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: {} size: 1173140 timestamp: 1771922508919 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-abi-3.4.0.100-h9a8c16c_2.conda @@ -12296,7 +11247,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: {} size: 13127 timestamp: 1771922508962 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/elfutils-0.194-h7d8af26_0.conda @@ -12316,9 +11266,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - elfutils >=0.194,<0.195.0a0 size: 1408066 timestamp: 1765447462530 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/epoxy-1.5.10-he30d5cf_2.conda @@ -12341,25 +11288,19 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - epoxy >=1.5.10,<1.6.0a0 size: 422103 timestamp: 1758743388115 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_1.conda - sha256: e4cc29e20435f2787031eafaf100496cb700d2ebc246e91211cbde023b2600b4 - md5: 4bcb07322aecccd75514fd585ad0b719 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_0.conda + sha256: a9cd5eb1700e11cc39acc36630a2d72a4e317943bd7c5695cd8804419f04ff42 + md5: 89f0247b3cea528d8ad1a6664a313153 depends: - - libexpat 2.8.1 hfae3067_1 + - libexpat 2.8.1 hfae3067_0 - libgcc >=14 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libexpat >=2.8.1,<3.0a0 - size: 141254 - timestamp: 1781203579915 + size: 140114 + timestamp: 1779278679081 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fcl-0.7.0-h841ecf2_8.conda sha256: e59440ebfb857f843a0678abf6aafb1b0b45c305d6269d27fdff7c45cd63fef1 md5: 2d17602b2516dc91d305c57a872d62c8 @@ -12372,9 +11313,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - fcl >=0.7.0,<0.8.0a0 size: 1454889 timestamp: 1736132812554 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_hd1a4c92_912.conda @@ -12434,9 +11372,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - ffmpeg >=8.0.1,<9.0a0 size: 12036520 timestamp: 1769713781879 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fftw-3.3.11-nompi_h66d8d02_100.conda @@ -12450,9 +11385,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - fftw >=3.3.11,<4.0a0 size: 1704301 timestamp: 1776781937409 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-headf6c6_6.conda @@ -12467,9 +11399,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - flann >=1.9.2,<1.9.3.0a0 size: 1420069 timestamp: 1774331959849 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h20c602a_0.conda @@ -12481,9 +11410,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - fmt >=12.1.0,<12.2.0a0 size: 197671 timestamp: 1767681179883 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.1-hba86a56_0.conda @@ -12499,10 +11425,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - fontconfig >=2.18.1,<3.0a0 - - fonts-conda-ecosystem size: 290522 timestamp: 1780450108132 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.63.0-py312ha4530ae_0.conda @@ -12520,7 +11442,6 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - run_exports: {} size: 2952221 timestamp: 1778770458588 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/foonathan-memory-0.7.3-h5ad3122_1.conda @@ -12531,9 +11452,6 @@ packages: - libstdcxx >=13 license: Zlib purls: [] - run_exports: - weak: - - foonathan-memory >=0.7.3,<0.7.4.0a0 size: 225684 timestamp: 1746248561179 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.11.0-h151373c_0.conda @@ -12547,7 +11465,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6740 timestamp: 1753098688910 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeglut-3.2.2-hddf9bb5_4.conda @@ -12568,9 +11485,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - freeglut >=3.2.2,<4.0a0 size: 148954 timestamp: 1776928010379 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-he4296dc_25.conda @@ -12591,9 +11505,6 @@ packages: - openjpeg >=2.5.4,<3.0a0 license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage purls: [] - run_exports: - weak: - - freeimage >=3.18.0,<3.19.0a0 size: 484680 timestamp: 1780001503149 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.3-h8af1aa0_1.conda @@ -12604,10 +11515,6 @@ packages: - libfreetype6 2.14.3 hdae7a39_1 license: GPL-2.0-only OR FTL purls: [] - run_exports: - weak: - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 size: 174060 timestamp: 1780933507786 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda @@ -12617,9 +11524,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - fribidi >=1.0.16,<2.0a0 size: 62909 timestamp: 1757438620177 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda @@ -12635,21 +11539,20 @@ packages: license_family: APACHE purls: - pkg:pypi/frozenlist?source=hash-mapping - run_exports: {} size: 54733 timestamp: 1779999833443 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda - sha256: 438e0f5a198bc752db3c1693371c20ac50347f0dae56e95d15a6e86f79bb1980 - md5: 72f889bb53eae093f7276b7ef1911cb2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h24a549f_19.conda + sha256: 6a5a295db229df19906e1aadb27d38270827985fca03f4165e3da468c3edfd01 + md5: 0ad8a664ad6cd5767114cddaa931d608 depends: - - conda-gcc-specs - gcc_impl_linux-aarch64 14.3.0 h398eab4_19 + track_features: + - gcc_no_conda_specs license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 29621 - timestamp: 1778268825860 + size: 29634 + timestamp: 1778268833581 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda sha256: 48ad41e482417ecb1b0c608139192ccb35ab09df195df69085b9b9378000287b md5: ad45f72d96f497f6cdfc31c86534c47f @@ -12665,7 +11568,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 68567347 timestamp: 1778268606528 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda @@ -12682,12 +11584,11 @@ packages: - sysroot_linux-aarch64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 73693226 timestamp: 1778860139481 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda - sha256: 524e287b7c1b3e53bc6ba830968c05bc60437cf0a4778c56a2d09235e357517b - md5: 877c135e8aada3eef4aef0bea9102c13 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_25.conda + sha256: e52a4dc150e9bebefd7aa42147e64f3bb1e05c86128013156867e0f50c793161 + md5: 37f51721bc9aee83218fbe356a65a5c6 depends: - gcc_impl_linux-aarch64 14.3.0.* - binutils_linux-aarch64 @@ -12695,25 +11596,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libgcc >=14 - size: 29091 - timestamp: 1781279944723 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_27.conda - sha256: 2450913611189cc3c26062a43a97a93501159335d4d314cca5e2678fb5f4d3b6 - md5: 619b8a05f89220fa8c9536dcfeeddd5b - depends: - - gcc_impl_linux-aarch64 15.2.0.* - - binutils_linux-aarch64 - - sysroot_linux-aarch64 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong: - - libgcc >=15 - size: 29074 - timestamp: 1781279974207 + size: 28918 + timestamp: 1779371711447 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.6-h90308e0_0.conda sha256: 53ac38045a8c0b6aa9cfaf784443a3744dc86ab4737c1479b44ae85c96926fe1 md5: bdd860e72c5e10eb4ffa3d61f9b02ee0 @@ -12727,9 +11611,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gdk-pixbuf >=2.44.6,<3.0a0 size: 583708 timestamp: 1774987740322 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/geographiclib-cpp-2.7-hfefdfc9_0.conda @@ -12741,9 +11622,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - geographiclib-cpp >=2.7,<2.8.0a0 size: 713193 timestamp: 1762553044644 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.25.1-h5ad3122_0.conda @@ -12759,10 +11637,6 @@ packages: - libstdcxx >=13 license: LGPL-2.1-or-later AND GPL-3.0-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 - - libgettextpo >=0.25.1,<1.0a0 size: 534760 timestamp: 1751557634743 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.25.1-h5ad3122_0.conda @@ -12773,22 +11647,20 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: {} size: 3999301 timestamp: 1751557600737 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda - sha256: a37a752156776aea2e6976a1bbba87b1160d1d4259a2455d956163b936fc665d - md5: 033c55ed42edc3d21528c6bc3f11421a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha384071_19.conda + sha256: e32597e09eaa2a3200e94fee2ae526567a027a9624be8847f63f9340c400035d + md5: 3f2c26c9a23f677b81675455b1ed0e75 depends: - - gcc 14.3.0.* - - gcc_impl_linux-aarch64 14.3.0.* - - gfortran_impl_linux-aarch64 14.3.0.* + - gcc 14.3.0 h24a549f_19 + - gcc_impl_linux-aarch64 14.3.0 h398eab4_19 + - gfortran_impl_linux-aarch64 14.3.0 h6b0ea1e_19 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 30531 - timestamp: 1759967819421 + size: 29012 + timestamp: 1778268842265 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda sha256: a32795b0cfae3bfa59359857865d20dc82ab142b1bc17b4ddc0c9f08bb50806b md5: 7741f3d34cb2552da0b1975ea488fcb2 @@ -12801,27 +11673,21 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 14838254 timestamp: 1778268770944 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda - sha256: 5121a773143d441b132c47cfe6ee7f10149fa93e677a11fcceb87156039a289b - md5: 2d97644339032316cf05e1ffbf33cad8 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h495b507_25.conda + sha256: 2d6f8dd4688ce11cbabec04ddbdad6faf7de7f78e4250c7b8d68d54d2aef6565 + md5: e6bed58ea5ceae16d776f30681f7e244 depends: - gfortran_impl_linux-aarch64 14.3.0.* - - gcc_linux-aarch64 ==14.3.0 h140ef2e_27 + - gcc_linux-aarch64 ==14.3.0 h140ef2e_25 - binutils_linux-aarch64 - sysroot_linux-aarch64 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libgfortran5 >=14.3.0 - - libgfortran - - libgcc >=14 - size: 27325 - timestamp: 1781279944723 + size: 27160 + timestamp: 1779371711447 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.54.0-pl5321h5dcfaa0_1.conda sha256: 9a5903559d6e66abee4abc92339a8532d8ad9b767252dd273aca96a20e010654 md5: a3ac0b23e49175684b6ee1f845924fb5 @@ -12837,7 +11703,6 @@ packages: - perl 5.* license: GPL-2.0-or-later and LGPL-2.1-or-later purls: [] - run_exports: {} size: 14442457 timestamp: 1780740536301 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda @@ -12852,9 +11717,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gl2ps >=1.4.2,<1.4.3.0a0 size: 73898 timestamp: 1773986749310 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda @@ -12869,9 +11731,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - glew >=2.3.0,<2.4.0a0 size: 484212 timestamp: 1766373411104 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.4-he30d5cf_1.conda @@ -12888,9 +11747,6 @@ packages: - xorg-libxrandr >=1.5.4,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - glfw >=3.4,<4.0a0 size: 170266 timestamp: 1758809249325 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.1-h72f18f7_2.conda @@ -12903,9 +11759,6 @@ packages: - glib-tools ==2.88.1 h7439e1d_2 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libglib >=2.88.1,<3.0a0 size: 102948 timestamp: 1778508920982 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.1-h7439e1d_2.conda @@ -12917,7 +11770,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 257707 timestamp: 1778508920982 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.3.0-h124e036_0.conda @@ -12930,9 +11782,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - glslang >=16,<17.0a0 size: 1359428 timestamp: 1777747105441 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda @@ -12943,7 +11792,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 7659 timestamp: 1748320119582 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda @@ -12954,9 +11802,6 @@ packages: - libstdcxx-ng >=12 license: GPL-2.0-or-later OR LGPL-3.0-or-later purls: [] - run_exports: - weak: - - gmp >=6.3.0,<7.0a0 size: 417323 timestamp: 1718980707330 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gnutls-3.8.13-hfe111f1_0.conda @@ -12973,9 +11818,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gnutls >=3.8.13,<3.9.0a0 size: 2124632 timestamp: 1778044273289 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-hfae3067_0.conda @@ -12987,9 +11829,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - graphite2 >=1.3.15,<2.0a0 size: 103119 timestamp: 1780455096710 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-14.1.2-h45e821f_0.conda @@ -13014,9 +11853,6 @@ packages: license: EPL-1.0 license_family: Other purls: [] - run_exports: - weak: - - graphviz >=14.1.2,<15.0a0 size: 2578234 timestamp: 1769427141106 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gst-plugins-base-1.26.11-hd6b5e5b_0.conda @@ -13051,9 +11887,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gst-plugins-base >=1.26.11,<1.27.0a0 size: 3216930 timestamp: 1776268752110 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-1.26.11-hf552038_0.conda @@ -13069,9 +11902,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gstreamer >=1.26.11,<1.27.0a0 size: 2304060 timestamp: 1776268752110 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-orc-0.4.42-h70b131a_0.conda @@ -13081,7 +11911,6 @@ packages: - libgcc >=14 license: BSD-2-Clause AND BSD-3-Clause purls: [] - run_exports: {} size: 377338 timestamp: 1768408531779 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda @@ -13095,9 +11924,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - gtest >=1.17.0,<1.17.1.0a0 size: 409213 timestamp: 1748320114722 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda @@ -13140,10 +11966,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gtk3 >=3.24.52,<4.0a0 - - adwaita-icon-theme size: 6023698 timestamp: 1774296668544 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda @@ -13156,23 +11978,19 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gts >=0.7.6,<0.8.0a0 size: 332673 timestamp: 1686545222091 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda - sha256: 7f38940a42d43bf7b969625686b64a11d52348d899d4487ed50673a09e7faece - md5: dac1f319c6157797289c174d062f87a1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha384071_19.conda + sha256: 95cdda0bc4df220683aceb03b0989a2b979debfd526660d4f38180e1abec5cd6 + md5: ab314316b1497e7896813f7e9e67ee39 depends: - - gcc 14.3.0.* - - gxx_impl_linux-aarch64 14.3.0.* + - gcc 14.3.0 h24a549f_19 + - gxx_impl_linux-aarch64 14.3.0 h0d4f5d4_19 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} - size: 30526 - timestamp: 1759967828504 + size: 29038 + timestamp: 1778268850192 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda sha256: d83ab2a25d52a2f564c9692aae1ef876a66ca2815f9997812df6babcf37d9e6e md5: e0761ef9f08505f6d1544ab0e202c764 @@ -13184,26 +12002,21 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 13722799 timestamp: 1778268804579 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda - sha256: 07df85f4ba8a199afb300fc1239aa72d6d425f4a258d4414102caff800ea8093 - md5: c8776dadbd23bb98b6863b0860047a35 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h73dd529_25.conda + sha256: ced990f90ab5fb94c88cc2fd37af34ab9e366216770ef66480e0777009108475 + md5: 94f9a4546bd84d4bd86433e589ff365d depends: - gxx_impl_linux-aarch64 14.3.0.* - - gcc_linux-aarch64 ==14.3.0 h140ef2e_27 + - gcc_linux-aarch64 ==14.3.0 h140ef2e_25 - binutils_linux-aarch64 - sysroot_linux-aarch64 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - strong: - - libstdcxx >=14 - - libgcc >=14 - size: 27646 - timestamp: 1781279944723 + size: 27479 + timestamp: 1779371711447 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda sha256: 156c068a26873adeed74deef7cc2788a0d952409c9d70dd62f1b21f94a90b758 md5: fe4f85a94f05fc0ba646a19e642c16c3 @@ -13212,9 +12025,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake3 >=3.5.5,<4.0a0 size: 7440 timestamp: 1759138433911 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-7.5.2-h1ad700d_2.conda @@ -13226,9 +12036,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-math7 >=7.5.2,<8.0a0 size: 8250 timestamp: 1759147772705 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-python-7.5.2-py312h9452373_2.conda @@ -13247,7 +12054,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 881527 timestamp: 1759147772705 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools-2.0.3-h8a9b3d2_1.conda @@ -13258,9 +12064,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 size: 7807 timestamp: 1759148397768 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools2-2.0.3-hd91f489_1.conda @@ -13271,10 +12074,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 - - libgz-tools >=2.0.3,<3.0a0 size: 7834 timestamp: 1759148397768 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-utils2-2.2.1-h2ce864c_2.conda @@ -13285,9 +12084,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-utils2 >=2.2.1,<3.0a0 size: 8050 timestamp: 1767701505722 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.2.1-h1134a53_0.conda @@ -13307,9 +12103,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - harfbuzz >=14.2.1 size: 2786349 timestamp: 1780454506157 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda @@ -13323,9 +12116,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - hdf4 >=4.2.15,<4.2.16.0a0 size: 773862 timestamp: 1695661552544 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.6-nompi_hf95b8e7_110.conda @@ -13343,9 +12133,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - hdf5 >=1.14.6,<1.14.7.0a0 size: 3915784 timestamp: 1780589303795 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hicolor-icon-theme-0.17-h8af1aa0_3.conda @@ -13354,7 +12141,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 17670 timestamp: 1771540496764 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda @@ -13366,9 +12152,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - icu >=78.3,<79.0a0 size: 12837286 timestamp: 1773822650615 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda @@ -13381,9 +12164,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - imath >=3.2.2,<3.2.3.0a0 size: 155215 timestamp: 1759984576946 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h9d01bbc_3.conda @@ -13397,9 +12177,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - jack >=1.9.22,<1.10.0a0 size: 488216 timestamp: 1747576147517 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h850eeee_1.conda @@ -13415,9 +12192,6 @@ packages: - libjpeg-turbo >=3.1.2,<4.0a0 license: JasPer-2.0 purls: [] - run_exports: - weak: - - jasper >=4.2.9,<5.0a0 size: 718811 timestamp: 1773677720825 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsoncpp-1.9.6-h34915d9_1.conda @@ -13428,9 +12202,6 @@ packages: - libstdcxx >=13 license: LicenseRef-Public-Domain OR MIT purls: [] - run_exports: - weak: - - jsoncpp >=1.9.6,<1.9.7.0a0 size: 162312 timestamp: 1733779925983 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda @@ -13441,9 +12212,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - jxrlib >=1.1,<1.2.0a0 size: 238091 timestamp: 1703333994798 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda @@ -13453,9 +12221,6 @@ packages: - libgcc >=13 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - keyutils >=1.6.3,<2.0a0 size: 129048 timestamp: 1754906002667 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.5.0-py312h1683e8e_0.conda @@ -13470,27 +12235,23 @@ packages: license_family: BSD purls: - pkg:pypi/kiwisolver?source=hash-mapping - run_exports: {} size: 82439 timestamp: 1773067307369 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-h2fb54aa_1.conda - sha256: b644718416a22b5d57c1194ea7207b7f8d33d6a2b42775763782d76cd7457aea - md5: 5fd2304064ef6199d1f91ec60ee7b820 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + sha256: b53999d888dda53c506b264e8c02b5f5c8e022c781eda0718f007339e6bc90ba + md5: d9ca108bd680ea86a963104b6b3e95ca depends: - keyutils >=1.6.3,<2.0a0 - libedit >=3.1.20250104,<3.2.0a0 - libedit >=3.1.20250104,<4.0a0 - libgcc >=14 - libstdcxx >=14 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - krb5 >=1.22.2,<1.23.0a0 - size: 1518484 - timestamp: 1781859412954 + size: 1517436 + timestamp: 1769773395215 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a md5: ab05bcf82d8509b4243f07e93bada144 @@ -13499,9 +12260,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - lame >=3.100,<3.101.0a0 size: 604863 timestamp: 1664997611416 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_1.conda @@ -13514,9 +12272,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - lcms2 >=2.19.1,<3.0a0 size: 296564 timestamp: 1780211834883 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda @@ -13529,7 +12284,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 875596 timestamp: 1774197520746 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda @@ -13541,9 +12295,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - lerc >=4.1.0,<5.0a0 size: 240444 timestamp: 1773114901155 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda @@ -13558,10 +12309,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - libabseil >=20250512.1,<20250513.0a0 - - libabseil =*=cxx17* size: 1327580 timestamp: 1750194149128 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda @@ -13573,9 +12320,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libacl >=2.3.2,<2.4.0a0 size: 115093 timestamp: 1706132568525 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda @@ -13587,14 +12331,11 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libaec >=1.1.5,<2.0a0 size: 37745 timestamp: 1769221878827 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda - sha256: 74ee8968f3abdb7c1cec4b6701791b8bfcc6ba7b79de2aa76e2042a86fb3a6ec - md5: a023664e901257bc10437c26a4923528 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.7-gpl_hbe7d12b_101.conda + sha256: 48382f97e0ab02d758cfaec81d7df6fd1ee665c4e917c02d36b7e1a15369396e + md5: 5420789510bfaf085262fec8f15b7a64 depends: - bzip2 >=1.0.8,<2.0a0 - libgcc >=14 @@ -13604,16 +12345,13 @@ packages: - libzlib >=1.3.2,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - lzo >=2.10,<3.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libarchive >=3.8.8,<3.9.0a0 - size: 968059 - timestamp: 1782289044270 + size: 1006349 + timestamp: 1778486388260 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda sha256: 146be90c237cf3d8399e44afe5f5d21ef9a15a7983ccea90e72d4ae0362f9b28 md5: 1c5813f6be57f087b6659593248daf00 @@ -13622,9 +12360,6 @@ packages: - libstdcxx >=13 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 size: 53434 timestamp: 1751557548397 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda @@ -13635,9 +12370,6 @@ packages: - libgcc >=13 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libasprintf >=0.25.1,<1.0a0 size: 34824 timestamp: 1751557562978 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda @@ -13655,9 +12387,6 @@ packages: - libzlib >=1.3.1,<2.0a0 license: ISC purls: [] - run_exports: - weak: - - libass >=0.17.4,<0.17.5.0a0 size: 171287 timestamp: 1749328949722 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libattr-2.5.2-he30d5cf_1.conda @@ -13668,9 +12397,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libattr >=2.5.2,<2.6.0a0 size: 54504 timestamp: 1773595923052 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.2-ha599f14_0.conda @@ -13685,9 +12411,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libavif16 >=1.4.2,<2.0a0 size: 149006 timestamp: 1779847094511 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-8_haddc8a3_openblas.conda @@ -13706,9 +12429,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libblas >=3.11.0,<4.0a0 size: 18843 timestamp: 1779859042591 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.88.0-h5651608_7.conda @@ -13726,7 +12446,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 3167446 timestamp: 1768377608900 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.88.0-h37bb5a9_7.conda @@ -13739,9 +12458,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: - weak: - - libboost >=1.88.0,<1.89.0a0 size: 38971 timestamp: 1768377704313 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.88.0-h8af1aa0_7.conda @@ -13751,7 +12467,6 @@ packages: - boost-cpp <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 14560170 timestamp: 1768377624033 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-python-1.88.0-py312he84d598_7.conda @@ -13770,7 +12485,6 @@ packages: - py-boost <0.0a0 license: BSL-1.0 purls: [] - run_exports: {} size: 124777 timestamp: 1768377925702 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-python-devel-1.88.0-py312h6ffa558_7.conda @@ -13787,9 +12501,6 @@ packages: - py-boost <0.0a0 license: BSL-1.0 purls: [] - run_exports: - weak: - - libboost-python >=1.88.0,<1.89.0a0 size: 19099 timestamp: 1768378287584 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda @@ -13800,9 +12511,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlicommon >=1.2.0,<1.3.0a0 size: 80030 timestamp: 1764017273715 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda @@ -13814,9 +12522,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlidec >=1.2.0,<1.3.0a0 size: 33166 timestamp: 1764017282936 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda @@ -13828,9 +12533,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libbrotlienc >=1.2.0,<1.3.0a0 size: 309304 timestamp: 1764017292044 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.77-hf9559e3_1.conda @@ -13841,9 +12543,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libcap >=2.77,<2.78.0a0 size: 109458 timestamp: 1774335293336 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda @@ -13859,9 +12558,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libcblas >=3.11.0,<4.0a0 size: 18817 timestamp: 1779859049133 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda @@ -13875,9 +12571,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libccd-double >=2.1,<2.2.0a0 size: 34226 timestamp: 1687341851768 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda @@ -13890,41 +12583,45 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang-cpp21.1 >=21.1.8,<21.2.0a0 size: 20653604 timestamp: 1777011685893 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h2a92e99_2.conda - sha256: d90361215838fe8af40bbc7dfecf366da7aeb8431834bc5ad49d3f1701daf5cc - md5: 3625c37dc2590f21db4089056b89709c +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.7-default_h2a92e99_1.conda + sha256: ff9e0d7dbe8abc4192cdbeb8f6339084250937fc68693ad4875782768aa5974b + md5: 4cc8ed1296217914e8de41a47863e83b depends: - libgcc >=14 - - libllvm22 >=22.1.8,<22.2.0a0 + - libllvm22 >=22.1.7,<22.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang-cpp22.1 >=22.1.8,<22.2.0a0 - size: 21380154 - timestamp: 1781851358777 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h3185f35_2.conda - sha256: 50653a48c55627feb149ca80d05d6112747e396e92a80f6094234e95e483cc6e - md5: d8fc483a0593061e241b04a951d25baf + size: 21293598 + timestamp: 1780520948461 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.7-default_h3185f35_1.conda + sha256: 7583f7803a853cb3f411953d991a96b299ec647d3abeaf936303559354e9bab9 + md5: 8f07cb152d34e3dcfad8cd760e8f4f8a depends: - libgcc >=14 - - libllvm22 >=22.1.8,<22.2.0a0 + - libllvm22 >=22.1.7,<22.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libclang13 >=22.1.8 - size: 12687762 - timestamp: 1781851496993 + size: 12621183 + timestamp: 1780521084113 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda + sha256: 41b51d21aed9ceedb050a4b37b29e57a2932c8f6ff94bc4eac6674ccfd5113df + md5: 3c9ee7875d7831caf58359139753b4ac + depends: + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 7800653 + timestamp: 1769057231305 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda sha256: 41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5 md5: 67828c963b17db7dc989fe5d509ef04a @@ -13936,30 +12633,24 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - libcups >=2.3.3,<2.4.0a0 size: 4553739 timestamp: 1770903929794 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-hc57f145_0.conda - sha256: 738dfa4f3b148f77656b3e13371dad2f57c320c762d90d0f1142039b53d07d41 - md5: 24e94f80c49aca799681ac65421d6920 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.20.0-hc57f145_0.conda + sha256: 1607d3caf58f7d9e9ad9e5f0841737d0cfa47b5501d4e36fbf98e1c645d7393e + md5: 88da514c8db1a7f6a05297941a897af2 depends: - krb5 >=1.22.2,<1.23.0a0 - libgcc >=14 - libnghttp2 >=1.68.1,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.6,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] - run_exports: - weak: - - libcurl >=8.21.0,<9.0a0 - size: 504660 - timestamp: 1782296544717 + size: 488942 + timestamp: 1777461485901 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 md5: a9138815598fe6b91a1d6782ca657b0c @@ -13968,9 +12659,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libdeflate >=1.25,<1.26.0a0 size: 71117 timestamp: 1761979776756 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda @@ -13982,9 +12670,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libdrm >=2.4.127,<2.5.0a0 size: 345283 timestamp: 1778975814771 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -13997,9 +12682,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libedit >=3.1.20250104,<3.2.0a0 size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_3.conda @@ -14009,7 +12691,6 @@ packages: - libglvnd 1.7.0 hd24410f_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 54600 timestamp: 1779728234591 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-devel-1.7.0-hd24410f_3.conda @@ -14021,9 +12702,6 @@ packages: - xorg-libx11 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libegl >=1.7.0,<2.0a0 size: 31552 timestamp: 1779728260736 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda @@ -14034,9 +12712,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - libev >=4.33,<4.34.0a0 size: 115123 timestamp: 1702146237623 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -14048,14 +12723,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libevent >=2.1.12,<2.1.13.0a0 size: 438992 timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - sha256: 20a5726bc8705d91437c9e6ef83b30da64a1719b869656d20a1ee818333ea5ac - md5: fac3b65a605cd253037fdf3daf2de8d9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda + sha256: 1fc392b997c6ee2bd3226a7cd870d0edbcbb367e25f9f18dd4a7025fced6efc0 + md5: 513dd884361dfb8a554298ed69b58823 depends: - libgcc >=14 constrains: @@ -14063,9 +12735,8 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} - size: 77649 - timestamp: 1781203572523 + size: 77140 + timestamp: 1779278671302 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 md5: 2f364feefb6a7c00423e80dcb12db62a @@ -14074,9 +12745,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libffi >=3.5.2,<3.6.0a0 size: 55952 timestamp: 1769456078358 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda @@ -14091,9 +12759,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libflac >=1.4.3,<1.5.0a0 size: 371550 timestamp: 1687765491794 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_1.conda @@ -14103,7 +12768,6 @@ packages: - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} size: 8381 timestamp: 1780933505754 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_1.conda @@ -14117,7 +12781,6 @@ packages: - freetype >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} size: 424236 timestamp: 1780933505195 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda @@ -14131,7 +12794,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 622462 timestamp: 1778268755949 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda @@ -14142,9 +12804,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - libgcc size: 27738 timestamp: 1778268759211 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h88aa843_12.conda @@ -14166,9 +12825,6 @@ packages: license: GD license_family: BSD purls: [] - run_exports: - weak: - - libgd >=2.3.3,<2.4.0a0 size: 195554 timestamp: 1766331786625 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.25.1-h5ad3122_0.conda @@ -14179,9 +12835,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libgettextpo >=0.25.1,<1.0a0 size: 225352 timestamp: 1751557555903 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.25.1-h5ad3122_0.conda @@ -14193,9 +12846,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - libgettextpo >=0.25.1,<1.0a0 size: 37460 timestamp: 1751557569909 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda @@ -14208,7 +12858,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 27728 timestamp: 1778268784621 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda @@ -14221,7 +12870,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 1487244 timestamp: 1778268767295 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_3.conda @@ -14232,7 +12880,6 @@ packages: - libglx 1.7.0 hd24410f_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 148112 timestamp: 1779728248678 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-devel-1.7.0-hd24410f_3.conda @@ -14243,9 +12890,6 @@ packages: - libglx-devel 1.7.0 hd24410f_3 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libgl >=1.7.0,<2.0a0 size: 116084 timestamp: 1779728257534 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.1-h96a7f82_2.conda @@ -14261,9 +12905,6 @@ packages: - glib >2.66 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libglib >=2.88.1,<3.0a0 size: 4946648 timestamp: 1778508920982 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-h5ad3122_1.conda @@ -14275,9 +12916,6 @@ packages: - libstdcxx >=13 license: SGI-B-2.0 purls: [] - run_exports: - weak: - - libglu >=9.0.3,<9.1.0a0 size: 310655 timestamp: 1748692200349 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_3.conda @@ -14285,7 +12923,6 @@ packages: md5: a2ad848c0aab2e326c6af08ea20502f4 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 146645 timestamp: 1779728228274 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_3.conda @@ -14296,7 +12933,6 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 76704 timestamp: 1779728242753 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-devel-1.7.0-hd24410f_3.conda @@ -14308,9 +12944,6 @@ packages: - xorg-xorgproto license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libglx >=1.7.0,<2.0a0 size: 27651 timestamp: 1779728252006 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda @@ -14319,9 +12952,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - _openmp_mutex >=4.5 size: 587387 timestamp: 1778268674393 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake3-3.5.5-h7ac5ae9_0.conda @@ -14334,9 +12964,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake3 >=3.5.5,<4.0a0 size: 218713 timestamp: 1759138433911 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake4-4.2.0-h7ac5ae9_1.conda @@ -14349,9 +12976,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-cmake4 >=4.2.0,<5.0a0 size: 218998 timestamp: 1759138590699 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-math7-7.5.2-h7ac5ae9_2.conda @@ -14367,9 +12991,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-math7 >=7.5.2,<8.0a0 size: 297443 timestamp: 1759147772705 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-tools-2.0.3-h7ac5ae9_1.conda @@ -14384,9 +13005,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-tools >=2.0.3,<3.0a0 size: 50928 timestamp: 1759148397768 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-utils2-2.2.1-h7ac5ae9_2.conda @@ -14400,9 +13018,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libgz-utils2 >=2.2.1,<3.0a0 size: 63399 timestamp: 1767701505720 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.13.0-default_ha95e27d_1000.conda @@ -14416,9 +13031,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libhwloc >=2.13.0,<2.13.1.0a0 size: 2453519 timestamp: 1770953713701 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda @@ -14429,9 +13041,6 @@ packages: - libstdcxx >=14 license: Apache-2.0 OR BSD-3-Clause purls: [] - run_exports: - weak: - - libhwy >=1.4.0,<1.5.0a0 size: 945401 timestamp: 1776989517303 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda @@ -14441,9 +13050,6 @@ packages: - libgcc >=14 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libiconv >=1.18,<2.0a0 size: 791226 timestamp: 1754910975665 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libidn2-2.3.8-h99ff5a0_1.conda @@ -14455,9 +13061,6 @@ packages: license: LGPL-2.0-only license_family: LGPL purls: [] - run_exports: - weak: - - libidn2 >=2,<3.0a0 size: 147165 timestamp: 1760387531719 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda @@ -14469,9 +13072,6 @@ packages: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - run_exports: - weak: - - libjpeg-turbo >=3.1.4.1,<4.0a0 size: 693143 timestamp: 1775962625956 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda @@ -14486,9 +13086,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libjxl >=0.11,<1.0a0 size: 1489188 timestamp: 1777065125935 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda @@ -14504,9 +13101,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - liblapack >=3.11.0,<3.12.0a0 size: 18828 timestamp: 1779859055749 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda @@ -14522,9 +13116,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - liblapacke >=3.11.0,<3.12.0a0 size: 18853 timestamp: 1779859062300 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda @@ -14540,14 +13131,11 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libllvm21 >=21.1.8,<21.2.0a0 size: 43148553 timestamp: 1765930975162 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.8-hfd2ba90_1.conda - sha256: dc943f1730a27f5fb36682c9852f7196f671c3a9df4a0a7a8f7ba665637c9151 - md5: 6fc7875f99e39c80dca8fcdc60e6559e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.7-hfd2ba90_0.conda + sha256: a9fa275214f02d0073c261081d57d72c8441e5efda865b31fc7fc003d2412082 + md5: 00e0b8a80486e38ed9e26c16a4e5a30b depends: - libgcc >=14 - libstdcxx >=14 @@ -14558,11 +13146,8 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - run_exports: - weak: - - libllvm22 >=22.1.8,<22.2.0a0 - size: 43302008 - timestamp: 1781785783993 + size: 43155847 + timestamp: 1780442966200 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libltdl-2.4.3a-h5ad3122_0.conda sha256: 079c7786458d2bda55c1c38a429c9bed50678f842284ca7645edcbe0dc13b456 md5: 6e13257812a29efb7cc84aa396c72902 @@ -14571,9 +13156,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libltdl >=2.4.3a,<2.5.0a0 size: 41874 timestamp: 1740593981564 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda @@ -14585,9 +13167,6 @@ packages: - xz 5.8.3.* license: 0BSD purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 126102 timestamp: 1775828008518 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda @@ -14598,9 +13177,6 @@ packages: - liblzma 5.8.3 he30d5cf_0 license: 0BSD purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 493047 timestamp: 1775828222341 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.5-h3543b8c_0.conda @@ -14612,9 +13188,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libmicrohttpd >=1.0.5,<1.1.0a0 size: 296558 timestamp: 1779091126550 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmujoco-3.6.0-h2b9416c_0.conda @@ -14635,9 +13208,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libmujoco >=3.6.0,<3.6.1.0a0 size: 11116191 timestamp: 1773254871641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.3-nompi_h06de00c_104.conda @@ -14662,9 +13232,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libnetcdf >=4.9.3,<4.9.4.0a0 size: 893278 timestamp: 1770719134169 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda @@ -14681,9 +13248,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libnghttp2 >=1.68.1,<2.0a0 size: 726928 timestamp: 1773854039807 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda @@ -14694,9 +13258,6 @@ packages: license: LGPL-2.1-only license_family: GPL purls: [] - run_exports: - weak: - - libnsl >=2.0.1,<2.1.0a0 size: 34831 timestamp: 1750274211000 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 @@ -14706,7 +13267,6 @@ packages: - libgcc-ng >=9.3.0 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 39449 timestamp: 1609781865660 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda @@ -14716,9 +13276,6 @@ packages: - libgcc >=14 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libnuma >=2.0.18,<3.0a0 size: 47706 timestamp: 1772781596087 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda @@ -14729,9 +13286,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libogg >=1.3.5,<1.4.0a0 size: 220653 timestamp: 1745826021156 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda @@ -14746,9 +13300,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libopenblas >=0.3.33,<1.0a0 size: 5121336 timestamp: 1776993423004 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopencv-4.12.0-qt6_py312h051a780_612.conda @@ -14799,9 +13350,6 @@ packages: purls: - pkg:pypi/opencv-python?source=hash-mapping - pkg:pypi/opencv-python-headless?source=hash-mapping - run_exports: - weak: - - libopencv >=4.12.0,<4.12.1.0a0 size: 21232907 timestamp: 1766496175059 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_3.conda @@ -14811,7 +13359,6 @@ packages: - libglvnd 1.7.0 hd24410f_3 license: LicenseRef-libglvnd purls: [] - run_exports: {} size: 58759 timestamp: 1779728245599 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-devel-1.7.0-hd24410f_3.conda @@ -14821,9 +13368,6 @@ packages: - libopengl 1.7.0 hd24410f_3 license: LicenseRef-libglvnd purls: [] - run_exports: - weak: - - libopengl >=1.7.0,<2.0a0 size: 16727 timestamp: 1779728254657 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-2025.4.1-h1915271_1.conda @@ -14835,9 +13379,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: - weak: - - libopenvino >=2025.4.1,<2025.4.2.0a0 size: 5665824 timestamp: 1769898242484 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-arm-cpu-plugin-2025.4.1-h1915271_1.conda @@ -14850,7 +13391,6 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 10070230 timestamp: 1769898273278 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-batch-plugin-2025.4.1-h3d5001d_1.conda @@ -14862,7 +13402,6 @@ packages: - libstdcxx >=14 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 111764 timestamp: 1769898305839 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-plugin-2025.4.1-h3d5001d_1.conda @@ -14874,7 +13413,6 @@ packages: - libstdcxx >=14 - tbb >=2022.3.0 purls: [] - run_exports: {} size: 235829 timestamp: 1769898319432 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-hetero-plugin-2025.4.1-he07c6df_1.conda @@ -14886,7 +13424,6 @@ packages: - libstdcxx >=14 - pugixml >=1.15,<1.16.0a0 purls: [] - run_exports: {} size: 204116 timestamp: 1769898333070 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-ir-frontend-2025.4.1-he07c6df_1.conda @@ -14898,9 +13435,6 @@ packages: - libstdcxx >=14 - pugixml >=1.15,<1.16.0a0 purls: [] - run_exports: - weak: - - libopenvino-ir-frontend >=2025.4.1,<2025.4.2.0a0 size: 190629 timestamp: 1769898346574 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-onnx-frontend-2025.4.1-h07d5dce_1.conda @@ -14914,9 +13448,6 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-onnx-frontend >=2025.4.1,<2025.4.2.0a0 size: 1692258 timestamp: 1769898360577 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-paddle-frontend-2025.4.1-h07d5dce_1.conda @@ -14930,9 +13461,6 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-paddle-frontend >=2025.4.1,<2025.4.2.0a0 size: 675934 timestamp: 1769898376449 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-pytorch-frontend-2025.4.1-hfae3067_1.conda @@ -14943,9 +13471,6 @@ packages: - libopenvino 2025.4.1 h1915271_1 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-pytorch-frontend >=2025.4.1,<2025.4.2.0a0 size: 1142325 timestamp: 1769898392266 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2025.4.1-h38473e3_1.conda @@ -14960,9 +13485,6 @@ packages: - libstdcxx >=14 - snappy >=1.2.2,<1.3.0a0 purls: [] - run_exports: - weak: - - libopenvino-tensorflow-frontend >=2025.4.1,<2025.4.2.0a0 size: 1224764 timestamp: 1769898407205 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2025.4.1-hfae3067_1.conda @@ -14973,9 +13495,6 @@ packages: - libopenvino 2025.4.1 h1915271_1 - libstdcxx >=14 purls: [] - run_exports: - weak: - - libopenvino-tensorflow-lite-frontend >=2025.4.1,<2025.4.2.0a0 size: 456871 timestamp: 1769898421788 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.6.1-h80f16a2_0.conda @@ -14986,9 +13505,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libopus >=1.6.1,<2.0a0 size: 383586 timestamp: 1768497303687 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_0.conda @@ -14999,9 +13515,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libpciaccess >=0.19,<0.20.0a0 size: 30294 timestamp: 1773533057559 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda @@ -15012,9 +13525,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement purls: [] - run_exports: - weak: - - libpng >=1.6.58,<1.7.0a0 size: 341202 timestamp: 1776315188425 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.4-hccacd55_0.conda @@ -15028,9 +13538,6 @@ packages: - openssl >=3.5.6,<4.0a0 license: PostgreSQL purls: [] - run_exports: - weak: - - libpq >=18.4,<19.0a0 size: 2760912 timestamp: 1778786280914 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.31.1-h61c7711_5.conda @@ -15045,29 +13552,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libprotobuf >=6.31.1,<6.31.2.0a0 size: 3897821 timestamp: 1780003417336 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-h50d7eb4_0.conda - sha256: 3302dc059c3989df06e9d00a1646b33577af8e754239af5ec3129f567ca30297 - md5: 3df17558b81216bbdcdee2ae17b6569a - depends: - - __glibc >=2.28,<3.0.a0 - - libgcc >=14 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=14.2.1 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - libraqm >=0.10.5,<0.11.0a0 - size: 29707 - timestamp: 1780835831861 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda sha256: 8b8da9dbd2290ba02185dd6dd5a83a514ef3c0f4f65feb395bd7a41b67e5067a md5: 8a0b1ef545682ef7bdb938bfde168f56 @@ -15081,9 +13567,6 @@ packages: - libjpeg-turbo >=3.1.2,<4.0a0 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - libraw >=0.22.1,<0.23.0a0 size: 803298 timestamp: 1775541734284 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda @@ -15103,9 +13586,6 @@ packages: - __glibc >=2.17 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - librsvg >=2.62.3,<3.0a0 size: 3052373 timestamp: 1780456154830 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda @@ -15117,9 +13597,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - weak: - - libsanitizer 14.3.0 size: 7199495 timestamp: 1778268550110 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda @@ -15130,9 +13607,6 @@ packages: - libstdcxx >=15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: - weak: - - libsanitizer 15.2.0 size: 7067965 timestamp: 1778268796086 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda @@ -15151,9 +13625,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libsdformat14 >=14.8.0,<15.0a0 size: 1173519 timestamp: 1759339827373 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda @@ -15171,9 +13642,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - libsndfile >=1.2.2,<1.3.0a0 size: 396501 timestamp: 1695747749825 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.22-h80f16a2_1.conda @@ -15183,9 +13651,6 @@ packages: - libgcc >=14 license: ISC purls: [] - run_exports: - weak: - - libsodium >=1.0.22,<1.0.23.0a0 size: 283426 timestamp: 1779163468728 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.2-h10b116e_0.conda @@ -15197,9 +13662,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] - run_exports: - weak: - - libsqlite >=3.53.2,<4.0a0 size: 962294 timestamp: 1780574462426 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda @@ -15212,9 +13674,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libssh2 >=1.11.1,<2.0a0 size: 311396 timestamp: 1745609845915 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda @@ -15227,7 +13686,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 5546559 timestamp: 1778268777463 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda @@ -15238,9 +13696,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: - strong: - - libstdcxx size: 27803 timestamp: 1778268813278 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.13-hf9559e3_0.conda @@ -15251,7 +13706,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 516600 timestamp: 1773797150163 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_0.conda @@ -15261,9 +13715,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libtasn1 >=4.21.0,<5.0a0 size: 126001 timestamp: 1768299601532 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda @@ -15278,9 +13729,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libtheora >=1.1.1,<1.2.0a0 size: 335103 timestamp: 1719667812650 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda @@ -15298,9 +13746,6 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - run_exports: - weak: - - libtiff >=4.7.1,<4.8.0a0 size: 488407 timestamp: 1762022048105 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtool-2.5.4-h5ad3122_0.conda @@ -15312,7 +13757,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 416270 timestamp: 1740594010519 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.13-hf9559e3_0.conda @@ -15323,7 +13767,6 @@ packages: - libgcc >=14 license: LGPL-2.1-or-later purls: [] - run_exports: {} size: 156357 timestamp: 1773797159424 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunistring-0.9.10-hf897c2e_0.tar.bz2 @@ -15333,9 +13776,6 @@ packages: - libgcc-ng >=9.3.0 license: GPL-3.0-only OR LGPL-3.0-only purls: [] - run_exports: - weak: - - libunistring >=0,<1.0a0 size: 1409624 timestamp: 1626959749923 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.8.3-h6470e1d_0.conda @@ -15347,9 +13787,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libunwind >=1.8.3,<1.9.0a0 size: 94555 timestamp: 1757032278900 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburcu-0.14.0-h0a1ffab_0.conda @@ -15360,9 +13797,6 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - liburcu >=0.14.0,<0.15.0a0 size: 197399 timestamp: 1718888513454 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.14-hfefdfc9_0.conda @@ -15374,9 +13808,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - liburing >=2.14,<2.15.0a0 size: 155011 timestamp: 1770567701524 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.29-h06eaf92_0.conda @@ -15387,24 +13818,18 @@ packages: - libudev1 >=257.4 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libusb >=1.0.29,<2.0a0 size: 93129 timestamp: 1748856228398 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - sha256: 7663489f97c104ae3814db10f384932c74b439f3c1fd4247e4fe3599830c090a - md5: 58fa42bc4bc71fc329889497ec15effb +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda + sha256: 1628839b062e98b2192857d4da8496ac9ac6b0dbb77aa040c34efc9192c440ee + md5: 0f42f9fedd2a32d798de95a7f65c456f depends: - libgcc >=14 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libuuid >=2.42.2,<3.0a0 - size: 43248 - timestamp: 1781625528371 + size: 43453 + timestamp: 1779118526838 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda sha256: 3e2ead35f47d01364031f323f1be984018c8f19a3a264f952ddcd043685a1c86 md5: ac7bcbd2c77691cd6d1ede8c029e8c8a @@ -15413,9 +13838,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libuv >=1.52.1,<2.0a0 size: 456627 timestamp: 1779396031450 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda @@ -15429,9 +13851,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libvorbis >=1.3.7,<1.4.0a0 size: 289391 timestamp: 1753879417231 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.15.2-hfae3067_0.conda @@ -15443,9 +13862,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libvpx >=1.15.2,<1.16.0a0 size: 1296382 timestamp: 1762012332100 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.341.0-h8b8848b_0.conda @@ -15461,9 +13877,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 size: 217655 timestamp: 1770077141862 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda @@ -15476,9 +13889,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libwebp-base >=1.6.0,<2.0a0 size: 359496 timestamp: 1752160685488 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda @@ -15492,9 +13902,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxcb >=1.17.0,<2.0a0 size: 397493 timestamp: 1727280745441 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -15504,9 +13911,6 @@ packages: - libgcc-ng >=12 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - libxcrypt >=4.4.36 size: 114269 timestamp: 1702724369203 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.13.2-h3c6a4c8_0.conda @@ -15523,9 +13927,6 @@ packages: license: MIT/X11 Derivative license_family: MIT purls: [] - run_exports: - weak: - - libxkbcommon >=1.13.2,<2.0a0 size: 875994 timestamp: 1780213408784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda @@ -15542,7 +13943,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 601948 timestamp: 1776376758674 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h869d058_0.conda @@ -15558,10 +13958,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxml2 - - libxml2-16 >=2.15.3 size: 48101 timestamp: 1776376766341 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda @@ -15574,9 +13970,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libxslt >=1.1.43,<2.0a0 size: 253367 timestamp: 1757964660396 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda @@ -15590,9 +13983,6 @@ packages: - __glibc >=2.17 license: Apache-2.0 OR EPL-2.0 purls: [] - run_exports: - weak: - - libzenohc >=1.7.2,<1.7.3.0a0 size: 4342299 timestamp: 1767984665690 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda @@ -15606,9 +13996,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libzip >=1.11.2,<2.0a0 size: 117603 timestamp: 1730442215935 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda @@ -15619,11 +14006,19 @@ packages: license: Zlib license_family: Other purls: [] - run_exports: - weak: - - libzlib >=1.3.2,<2.0a0 size: 69833 timestamp: 1774072605429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.7-he40846f_0.conda + sha256: 735e015fa7e3e1b218ab05f17e590cfe2a58228db45d1e5e6dddbaa94f57003b + md5: 47caf591958c074aa303667702de9e30 + constrains: + - openmp 22.1.7|22.1.7.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 5904649 + timestamp: 1780455572101 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 sha256: af98d46a313c5af26cb88923bf44bdd3b25eb24ae93f125633e6cffcc7f4a03b md5: 71a86b259b778dbad7f32c1b0edc3e67 @@ -15632,9 +14027,6 @@ packages: - libstdcxx-ng >=12 license: Zlib purls: [] - run_exports: - weak: - - lodepng >=20220109,<20220110.0a0 size: 104299 timestamp: 1655914369153 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda @@ -15646,9 +14038,6 @@ packages: - liburcu >=0.14.0,<0.15.0a0 license: LGPL-2.1-only purls: [] - run_exports: - weak: - - lttng-ust >=2.13.9,<2.14.0a0 size: 419653 timestamp: 1745310243392 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda @@ -15666,7 +14055,6 @@ packages: license: BSD-3-Clause and MIT-CMU purls: - pkg:pypi/lxml?source=hash-mapping - run_exports: {} size: 1484640 timestamp: 1779194923178 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py312he78555a_1.conda @@ -15683,7 +14071,6 @@ packages: license_family: BSD purls: - pkg:pypi/lz4?source=hash-mapping - run_exports: {} size: 51745 timestamp: 1765026442641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda @@ -15695,9 +14082,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - lz4-c >=1.10.0,<1.11.0a0 size: 184953 timestamp: 1733740984533 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda @@ -15708,9 +14092,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - lzo >=2.10,<3.0a0 size: 190187 timestamp: 1753889356434 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda @@ -15721,7 +14102,6 @@ packages: license: GPL-3.0-or-later license_family: GPL purls: [] - run_exports: {} size: 528318 timestamp: 1727801707353 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda @@ -15737,14 +14117,13 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - run_exports: {} size: 26305 timestamp: 1772446326927 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_0.conda - sha256: a70ef35a21e0505f18a7b52d21feb3475b9abcb569aa297546e84be7694bd7b7 - md5: e0e29a3b48168b7c15936d2a6e1b6867 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.9-py312h8025657_0.conda + sha256: 3b61ebdddd86f972acefd8717f8b017ba2d32c421240ad954322b0a0a0aa931f + md5: 92cfc26183bc7d84c62a3f7fd8fd73ca depends: - - matplotlib-base >=3.11.0,<3.11.1.0a0 + - matplotlib-base >=3.10.9,<3.10.10.0a0 - pyside6 >=6.7.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -15752,12 +14131,11 @@ packages: license: PSF-2.0 license_family: PSF purls: [] - run_exports: {} - size: 14995 - timestamp: 1781626860136 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h982a919_0.conda - sha256: a1ff1969db6667fb97f79aece3d15318daa024aa0d1bc78d3b2ba67d0a4ee662 - md5: 76ab801564d5bcc45432d24d90359c70 + size: 17860 + timestamp: 1777000675377 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.9-py312h9d0c5ba_0.conda + sha256: 7bad069609cd69159e2658ce7c89c12b3d93b9b6e7e27ef7de31a1daa0f0b092 + md5: 02f91252126f398a45af7c9ff5ac089b depends: - contourpy >=1.0.1 - cycler >=0.10 @@ -15767,7 +14145,6 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libraqm >=0.10.5,<0.11.0a0 - libstdcxx >=14 - numpy >=1.23 - numpy >=1.23,<3 @@ -15775,6 +14152,7 @@ packages: - pillow >=8 - pyparsing >=2.3.1 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 - qhull >=2020.2,<2020.3.0a0 @@ -15783,25 +14161,8 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - run_exports: {} - size: 8860334 - timestamp: 1781626845576 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.14.1-py310he8189be_0.conda - noarch: python - sha256: 54435e557d2160d0307f69b4ac7926b855446e97cc721d65903da760be9dcb03 - md5: 7bb9ef1f1d810d006c20c9977676be96 - depends: - - python - - tomli >=1.1.0 - - libgcc >=14 - - openssl >=3.5.7,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - run_exports: {} - size: 9724016 - timestamp: 1781871507536 + size: 8373442 + timestamp: 1777000661173 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda sha256: e6cf93625ef33463cb08d0e604d8d0be661751d014cf6d5e0e75733b4b992b39 md5: 933a4f20f282b1a9b67dce5852fad614 @@ -15821,9 +14182,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - mesalib >=26.0.3,<26.1.0a0 size: 2876962 timestamp: 1773867973610 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda @@ -15835,14 +14193,11 @@ packages: license: LGPL-2.1-only license_family: LGPL purls: [] - run_exports: - weak: - - mpg123 >=1.32.9,<1.33.0a0 size: 558708 timestamp: 1730581372400 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h4f740d2_0.conda - sha256: 969c34271f6c487ce9347cee49ce15cedd656c2cd56c0c923be951d82c608903 - md5: c0be51d841515f51257182c1dd6370af +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py312h4f740d2_1.conda + sha256: 54d29951b12731bbcd01b914f101566fc00da060151e11c295b8eb698d219897 + md5: fa2dab79048dfea842cb4f6eac8301fb depends: - libgcc >=14 - libstdcxx >=14 @@ -15852,10 +14207,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/msgpack?source=compressed-mapping - run_exports: {} - size: 98998 - timestamp: 1782070558357 + - pkg:pypi/msgpack?source=hash-mapping + size: 99305 + timestamp: 1762504246142 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda sha256: 98a69970ef80d88e1ac932444f2c2ea7c3aed8de723cc93ab44209b274a7115c md5: ee31f32f4943c13983d548e52d9bcdf2 @@ -15867,7 +14221,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 17815 timestamp: 1773254871641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-python-3.6.0-np2py312h7d9f038_0.conda @@ -15901,7 +14254,6 @@ packages: license_family: APACHE purls: - pkg:pypi/mujoco?source=hash-mapping - run_exports: {} size: 2681953 timestamp: 1773254871641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-samples-3.6.0-h21f88d6_0.conda @@ -15916,7 +14268,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 58442 timestamp: 1773254871641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-simulate-3.6.0-hd58b8c5_0.conda @@ -15927,7 +14278,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 17656 timestamp: 1773254871641 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda @@ -15942,7 +14292,6 @@ packages: license_family: APACHE purls: - pkg:pypi/multidict?source=hash-mapping - run_exports: {} size: 102146 timestamp: 1771610849986 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.20.2-py312h996f985_0.conda @@ -15962,7 +14311,6 @@ packages: license_family: MIT purls: - pkg:pypi/mypy?source=hash-mapping - run_exports: {} size: 19714903 timestamp: 1776801935276 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nanoflann-1.6.1-h17cf362_0.conda @@ -15970,7 +14318,6 @@ packages: md5: 42cc1fd8821a5a824a643a4ed055e24e license: BSD purls: [] - run_exports: {} size: 25905 timestamp: 1728332554740 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda @@ -15980,9 +14327,6 @@ packages: - libgcc >=14 license: X11 AND BSD-3-Clause purls: [] - run_exports: - weak: - - ncurses >=6.6,<7.0a0 size: 960036 timestamp: 1777422174534 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nettle-3.10.1-hfdb7b1a_0.conda @@ -15993,9 +14337,6 @@ packages: - gmp >=6.3.0,<7.0a0 license: GPL-2.0-or-later OR LGPL-3.0-or-later purls: [] - run_exports: - weak: - - nettle >=3.10.1,<3.11.0a0 size: 1151473 timestamp: 1748012425058 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.2-hdc560ac_0.conda @@ -16007,7 +14348,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 182666 timestamp: 1763688214250 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda @@ -16018,7 +14358,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 136931 timestamp: 1758194316834 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda @@ -16030,9 +14369,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - nspr >=4.38,<5.0a0 size: 235140 timestamp: 1762350120355 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda @@ -16047,9 +14383,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - nss >=3.118,<4.0a0 size: 2061869 timestamp: 1763490303490 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -16070,9 +14403,6 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - run_exports: - weak: - - numpy >=1.26.4,<2.0a0 size: 6614296 timestamp: 1707225994762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda @@ -16084,9 +14414,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - octomap >=1.10.0,<1.11.0a0 size: 239860 timestamp: 1728635298509 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda @@ -16105,7 +14432,6 @@ packages: license: MIT AND BSL-1.0 purls: - pkg:pypi/onnxruntime?source=hash-mapping - run_exports: {} size: 14039987 timestamp: 1778967442914 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda @@ -16119,27 +14445,23 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: {} size: 27887 timestamp: 1766496259667 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda - sha256: fb008a0d6554d3d84bf78aaf66a167b833b9af6147515b4f4bbfd8b6983bc66f - md5: cecda49f5448d9b737f4adc25514777d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.12-hda3a014_0.conda + sha256: 12e3d695f721bc1b7a9b9b256c89610b5df0b47b9a51d80cedd30b31ea6018fc + md5: 0b3bcd620bea1e0f3603d62e40ea9405 depends: - libstdcxx >=14 - libgcc >=14 - - openjph >=0.30.1,<0.31.0a0 - - imath >=3.2.2,<3.2.3.0a0 - - libdeflate >=1.25,<1.26.0a0 - libzlib >=1.3.2,<2.0a0 + - openjph >=0.27.3,<0.28.0a0 + - libdeflate >=1.25,<1.26.0a0 + - imath >=3.2.2,<3.2.3.0a0 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - openexr >=3.4.13,<3.5.0a0 - size: 1185348 - timestamp: 1782198403352 + size: 1176484 + timestamp: 1779680405266 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h0564a2a_0.conda sha256: 3b7a519e3b7d7721a0536f6cba7f1909b878c71962ee67f02242958314748341 md5: 0abed5d78c07a64e85c54f705ba14d30 @@ -16149,9 +14471,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openh264 >=2.6.0,<2.6.1.0a0 size: 774512 timestamp: 1739400731652 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda @@ -16166,14 +14485,11 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openjpeg >=2.5.4,<3.0a0 size: 392636 timestamp: 1758489353577 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda - sha256: 12f6ac15e3bd4de872a28f096817c6c66bd9a058e7d684ee1e57aff118004d42 - md5: 6d8f94ef9f90c0b202d31043a9aab1a8 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.27.4-h55827e0_0.conda + sha256: 1ab7452fbe3072bb4e5229dd7af430bff15421171315e81cd93c280910f5034d + md5: 83d45f7a9b54c19b120ac2929149bf72 depends: - libstdcxx >=14 - libgcc >=14 @@ -16181,11 +14497,8 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openjph >=0.30.1,<0.31.0a0 - size: 238874 - timestamp: 1782091147195 + size: 231064 + timestamp: 1780596799608 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda sha256: 08fab1d144a9790763f30bd44ac4a2f288703ad668d8c31d339ddea23e981147 md5: 67eea19865a3463f75ca0d3a1d096350 @@ -16198,9 +14511,6 @@ packages: license: OLDAP-2.8 license_family: BSD purls: [] - run_exports: - weak: - - openldap >=2.6.13,<2.7.0a0 size: 911524 timestamp: 1775741371965 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda @@ -16212,9 +14522,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - openssl >=3.6.3,<4.0a0 size: 3704664 timestamp: 1781069675555 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda @@ -16228,9 +14535,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - orocos-kdl >=1.5.3,<1.6.0a0 size: 376844 timestamp: 1778003961570 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.2-h376a255_0.conda @@ -16243,9 +14547,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - p11-kit >=0.26.2,<0.27.0a0 size: 5180065 timestamp: 1770420952184 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.56.4-h8547ced_1.conda @@ -16266,9 +14567,6 @@ packages: - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - pango >=1.56.4,<2.0a0 size: 470441 timestamp: 1774284032397 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.15.1-h4720788_7.conda @@ -16294,9 +14592,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcl >=1.15.1,<1.15.2.0a0 size: 17314345 timestamp: 1772142882164 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 @@ -16308,9 +14603,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcre >=8.45,<9.0a0 size: 249883 timestamp: 1623793306266 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda @@ -16323,9 +14615,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pcre2 >=10.47,<10.48.0a0 size: 1166552 timestamp: 1763655534263 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda @@ -16337,11 +14626,6 @@ packages: - libxcrypt >=4.4.36 license: GPL-1.0-or-later OR Artistic-1.0-Perl purls: [] - run_exports: - weak: - - perl >=5.32.1,<5.33.0a0 *_perl5 - noarch: - - perl >=5.32.1,<6.0a0 *_perl5 size: 13338804 timestamp: 1703310557094 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.3.0-py312h6e23c8a_3.conda @@ -16364,7 +14648,6 @@ packages: license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - run_exports: {} size: 1004533 timestamp: 1758208960718 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda @@ -16377,9 +14660,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - pixman >=0.46.4,<1.0a0 size: 357913 timestamp: 1754665583353 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda @@ -16391,7 +14671,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 54834 timestamp: 1720806008171 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/popt-1.19-h90929bb_0.conda @@ -16403,9 +14682,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - popt >=1.19,<2.0a0 size: 179869 timestamp: 1765446323424 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.7.0-h9d01bbc_0.conda @@ -16418,9 +14694,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - portaudio >=19.7.0,<19.8.0a0 size: 82419 timestamp: 1730364154715 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.7.1-hd211770_3.conda @@ -16440,9 +14713,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - proj >=9.7.1,<9.8.0a0 size: 3509940 timestamp: 1770890762505 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.5.2-py312ha4530ae_0.conda @@ -16457,7 +14727,6 @@ packages: license_family: APACHE purls: - pkg:pypi/propcache?source=hash-mapping - run_exports: {} size: 52099 timestamp: 1780037769244 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-6.31.1-py312h07dbafa_2.conda @@ -16478,7 +14747,6 @@ packages: license_family: BSD purls: - pkg:pypi/protobuf?source=hash-mapping - run_exports: {} size: 487892 timestamp: 1760393502978 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py312hd41f8a7_0.conda @@ -16493,7 +14761,6 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - run_exports: {} size: 230283 timestamp: 1769678159757 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda @@ -16504,7 +14771,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 8342 timestamp: 1726803319942 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.15-h6ef32b0_0.conda @@ -16516,9 +14782,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - pugixml >=1.15,<1.16.0a0 size: 113424 timestamp: 1737355438448 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-17.0-h3dd60a8_3.conda @@ -16531,9 +14794,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - pulseaudio-client >=17.0,<17.1.0a0 size: 18473 timestamp: 1763148328578 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-hcf98165_3.conda @@ -16552,9 +14812,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - pulseaudio-client >=17.0,<17.1.0a0 size: 760306 timestamp: 1763148231117 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-daemon-17.0-hb9404ba_3.conda @@ -16586,9 +14843,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - pulseaudio-daemon >=17.0,<17.1.0a0 size: 897388 timestamp: 1763148315136 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/py-opencv-4.12.0-qt6_py312h1743b20_612.conda @@ -16603,9 +14857,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - py-opencv >=4.12.0,<5.0a0 size: 1154560 timestamp: 1766496246197 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pybullet-3.25-py312h88173f1_5.conda @@ -16623,7 +14874,6 @@ packages: license: Zlib purls: - pkg:pypi/pybullet?source=hash-mapping - run_exports: {} size: 63132892 timestamp: 1761046679147 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pycairo-1.29.0-py312h1f35134_1.conda @@ -16639,7 +14889,6 @@ packages: license: LGPL-2.1-only OR MPL-1.1 purls: - pkg:pypi/pycairo?source=hash-mapping - run_exports: {} size: 123069 timestamp: 1770727863809 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pymongo-4.17.0-py312hfcd9f9b_0.conda @@ -16655,7 +14904,6 @@ packages: license_family: APACHE purls: - pkg:pypi/pymongo?source=hash-mapping - run_exports: {} size: 2384320 timestamp: 1776767392027 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_2.conda @@ -16673,7 +14921,6 @@ packages: license_family: Apache purls: - pkg:pypi/pynacl?source=hash-mapping - run_exports: {} size: 1183872 timestamp: 1778984925118 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt-5.15.11-py312hc13527c_2.conda @@ -16706,9 +14953,6 @@ packages: license_family: GPL purls: - pkg:pypi/pyqt5?source=hash-mapping - run_exports: - weak: - - pyqt >=5.15.11,<5.16.0a0 size: 6433486 timestamp: 1759498273803 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt5-sip-12.17.0-py312h1ab2c47_2.conda @@ -16727,7 +14971,6 @@ packages: license_family: GPL purls: - pkg:pypi/pyqt5-sip?source=hash-mapping - run_exports: {} size: 89968 timestamp: 1759495630955 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.10.2-py312hfc1e6cc_3.conda @@ -16753,7 +14996,6 @@ packages: purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - run_exports: {} size: 8727046 timestamp: 1778394772130 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.1-h43d1f9e_1_cpython.conda @@ -16781,43 +15023,8 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python size: 13871351 timestamp: 1703338868943 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.13-h91f4b29_0_cpython.conda - sha256: 61933478813f5fd96c89a00dd964201b0266d71d2e3bc4dd5679354056e46948 - md5: 8aed8fdbbc03a5c9f455d20ce75a9dce - depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.7.4,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python - size: 13757191 - timestamp: 1772728951853 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.11.0-py312hd41f8a7_0.conda sha256: c73b4654c92f2fef1e6bb462464b464abbcf65cd0ca4b7239ace25204a589c4b md5: 721092396c3edc8c0cdd921dacf6a276 @@ -16830,7 +15037,6 @@ packages: license_family: MIT purls: - pkg:pypi/librt?source=hash-mapping - run_exports: {} size: 157928 timestamp: 1778511638325 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_2.conda @@ -16848,9 +15054,6 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - python-orocos-kdl >=1.5.3,<1.6.0a0 size: 306903 timestamp: 1778045956966 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda @@ -16866,7 +15069,6 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - run_exports: {} size: 192182 timestamp: 1770223431156 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda @@ -16877,9 +15079,6 @@ packages: - libstdcxx-ng >=12 license: LicenseRef-Qhull purls: [] - run_exports: - weak: - - qhull >=2020.2,<2020.3.0a0 size: 554571 timestamp: 1720813941183 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt-main-5.15.15-ha9b3be2_8.conda @@ -16939,9 +15138,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - qt-main >=5.15.15,<5.16.0a0 size: 51951079 timestamp: 1772794115656 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.10.2-pl5321h598db47_6.conda @@ -17015,9 +15211,6 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - run_exports: - weak: - - qt6-main >=6.10.2,<6.11.0a0 size: 60839855 timestamp: 1773865968913 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h5ad3122_2.conda @@ -17030,7 +15223,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 157209 timestamp: 1742820749175 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda @@ -17043,9 +15235,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - rav1e >=0.8.1,<0.9.0a0 size: 5253980 timestamp: 1772540729272 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.5.9-py312hcd1a082_0.conda @@ -17060,7 +15249,6 @@ packages: license_family: PSF purls: - pkg:pypi/regex?source=hash-mapping - run_exports: {} size: 405735 timestamp: 1778374200794 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda @@ -17071,9 +15259,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - rhash >=1.4.6,<2.0a0 size: 207475 timestamp: 1748644952027 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rsync-3.4.4-h3aee46b_0.conda @@ -17092,7 +15277,6 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - run_exports: {} size: 395365 timestamp: 1780999340933 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda @@ -17113,9 +15297,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - ruby >=4.0.5,<4.1.0a0 size: 17776666 timestamp: 1779257277421 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda @@ -17131,25 +15312,8 @@ packages: license_family: MIT purls: - pkg:pypi/ruff?source=hash-mapping - run_exports: {} size: 8791276 timestamp: 1769521008362 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - sha256: 3bdc8f7f48a6086464fe8d114ea116ab8dc6d71fd20f493da31dd3693a1d6cfc - md5: 56ae3fd49c525a774ea38ba30221605f - depends: - - gcc_impl_linux-aarch64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-aarch64-unknown-linux-gnu 1.91.1 hbe8e118_0 - - sysroot_linux-aarch64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 195849499 - timestamp: 1762817258076 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda sha256: 88f399576f66bc612473248413cbac5624eb00ad1a52831662ce1fc0a38916f8 md5: 489afc4ab72277b53368d9cbebb9af4d @@ -17161,26 +15325,9 @@ packages: - sysroot_linux-aarch64 >=2.17 license: MIT license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 + purls: [] size: 133391007 timestamp: 1780047167214 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.96.0-hb84128a_0.conda - sha256: 9748059671631c9614324f548556023b0573cd2dac90572042ab492ea7c2de04 - md5: aa0ba9a7c9c623d73caf9d854a47ca36 - depends: - - gcc_linux-aarch64 - - rust 1.96.0.* - - rust-std-aarch64-unknown-linux-gnu 1.96.0.* - - sysroot_linux-aarch64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11857 - timestamp: 1780932769886 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda sha256: faad223a5a3318687308cd1ae235ad5aee4de2d090cbc2280b3281e506279249 md5: 60bbefd5c712570fec2b52275f641192 @@ -17201,7 +15348,6 @@ packages: license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - run_exports: {} size: 16878451 timestamp: 1779874509446 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda @@ -17213,9 +15359,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - libsdformat14 >=14.8.0,<15.0a0 size: 14075 timestamp: 1759339827373 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda @@ -17235,7 +15378,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 591957 timestamp: 1759339827373 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.56-h7ac5ae9_0.conda @@ -17249,9 +15391,6 @@ packages: - libegl >=1.7.0,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - sdl2 >=2.32.56,<3.0a0 size: 597756 timestamp: 1757842928996 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.10-had2c13b_0.conda @@ -17281,9 +15420,6 @@ packages: - dbus >=1.16.2,<2.0a0 license: Zlib purls: [] - run_exports: - weak: - - sdl3 >=3.4.10,<4.0a0 size: 2144308 timestamp: 1780262838628 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda @@ -17297,9 +15433,6 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - shaderc >=2025.5,<2025.6.0a0 size: 115498 timestamp: 1770208786806 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.3-py312hfcd9f9b_0.conda @@ -17318,9 +15451,6 @@ packages: license_family: BSD purls: - pkg:pypi/sip?source=hash-mapping - run_exports: - weak: - - sip >=6.15.3,<6.16.0a0 size: 737077 timestamp: 1774375435468 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda @@ -17333,9 +15463,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - snappy >=1.2.2,<1.3.0a0 size: 47096 timestamp: 1762948094646 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/soxr-0.1.3-hb4cce97_3.conda @@ -17346,9 +15473,6 @@ packages: - libgcc-ng >=12 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - soxr >=0.1.3,<0.1.4.0a0 size: 111209 timestamp: 1674059588618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-h9f97df7_1.conda @@ -17361,9 +15485,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - spdlog >=1.17.0,<1.18.0a0 size: 195699 timestamp: 1767781668042 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_0.conda @@ -17377,9 +15498,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: - weak: - - spirv-tools >=2026,<2027.0a0 size: 2290233 timestamp: 1780139661664 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.2-hf1c7be2_0.conda @@ -17394,9 +15512,6 @@ packages: - readline >=8.3,<9.0a0 license: blessing purls: [] - run_exports: - weak: - - libsqlite >=3.53.2,<4.0a0 size: 210202 timestamp: 1780574468062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_0.conda @@ -17408,9 +15523,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - svt-av1 >=4.0.1,<4.0.2.0a0 size: 2042800 timestamp: 1769668627820 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2023.0.0-h57272ed_2.conda @@ -17423,7 +15535,6 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - run_exports: {} size: 145425 timestamp: 1778675412470 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-devel-2023.0.0-h57272ed_2.conda @@ -17434,9 +15545,6 @@ packages: - libstdcxx >=14 - tbb 2023.0.0 h57272ed_2 purls: [] - run_exports: - weak: - - tbb >=2023.0.0 size: 1139148 timestamp: 1778675522611 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda @@ -17447,9 +15555,6 @@ packages: - libgcc >=13 license: Zlib purls: [] - run_exports: - weak: - - tinyxml2 >=11.0.0,<11.1.0a0 size: 133310 timestamp: 1742246428717 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda @@ -17463,9 +15568,6 @@ packages: license: TCL license_family: BSD purls: [] - run_exports: - weak: - - tk >=8.6.13,<8.7.0a0 size: 3368666 timestamp: 1769464148928 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.7-py312hefbd42c_0.conda @@ -17479,7 +15581,6 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - run_exports: {} size: 863626 timestamp: 1781007844330 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda @@ -17496,7 +15597,6 @@ packages: license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - run_exports: {} size: 15682 timestamp: 1769438785443 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uncrustify-0.83.0-h7ac5ae9_0.conda @@ -17508,7 +15608,6 @@ packages: license: GPL-2.0-only license_family: GPL purls: [] - run_exports: {} size: 741203 timestamp: 1779015701987 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-17.0.1-py312hcd1a082_0.conda @@ -17523,7 +15622,6 @@ packages: license_family: Apache purls: - pkg:pypi/unicodedata2?source=hash-mapping - run_exports: {} size: 409407 timestamp: 1770909146204 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom-4.0.1-hcc88bc6_4.conda @@ -17538,10 +15636,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - urdfdom_headers >=1.1.2,<2.0a0 - - urdfdom >=4.0.1,<4.1.0a0 size: 127973 timestamp: 1771238089976 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom-py-1.2.1-py312h76ea178_6.conda @@ -17556,7 +15650,6 @@ packages: license_family: BSD purls: - pkg:pypi/urdfdom-py?source=hash-mapping - run_exports: {} size: 49424 timestamp: 1756847510243 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom_headers-1.1.2-h17cf362_0.conda @@ -17568,7 +15661,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 19152 timestamp: 1726152459234 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.09-h8af1aa0_0.conda @@ -17576,21 +15668,8 @@ packages: md5: daa98fd6d175e72d65c353b6b7504971 license: BSL-1.0 purls: [] - run_exports: {} size: 14197 timestamp: 1767012435525 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.24-haa595b2_0.conda - sha256: f45b6c94a9c15e0557c93f5f3a40b836ea44dcbadd695f4d76083e03ed491d68 - md5: 3e8fc12653ad25ba1d46417cd9163ad9 - depends: - - libstdcxx >=14 - - libgcc >=14 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 19200452 - timestamp: 1782258148904 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_0.conda sha256: d086e094a199ba83f023fbec3753bcff561677910cac31bd8c38ab84fb764820 md5: 8ce740ca4fe8871e8d90e00063e9a748 @@ -17607,9 +15686,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - viskores >=1.1.1,<1.2.0a0 size: 22924208 timestamp: 1777494708492 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda @@ -17629,9 +15705,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - vtk-base >=9.5.2,<9.5.3.0a0 size: 25478 timestamp: 1768718080474 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda @@ -17687,9 +15760,6 @@ packages: license_family: BSD purls: - pkg:pypi/vtk?source=hash-mapping - run_exports: - weak: - - vtk-base >=9.5.2,<9.5.3.0a0 size: 64690746 timestamp: 1768718080472 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda @@ -17703,9 +15773,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - vtk-io-ffmpeg >=9.5.2,<9.5.3.0a0 size: 106747 timestamp: 1768718080474 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda @@ -17719,14 +15786,11 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - wayland >=1.25.0,<2.0a0 size: 335260 timestamp: 1773959583826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda - sha256: 920a81cd9444293a78fe6e9479bacf8fbf672fc6f5268c7237ba4335376f275e - md5: e2b2d650e49db3cafe5d9e7da964e167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.1-py312hcd1a082_0.conda + sha256: 4a2a23309047c6a45131d106316c19bfb4e50ec36e8453c5f674b154197de9b5 + md5: e43ff6a1d7def0b1bb077a02f610cc04 depends: - libgcc >=14 - python >=3.12,<3.13.0a0 @@ -17736,9 +15800,8 @@ packages: license_family: BSD purls: - pkg:pypi/wrapt?source=compressed-mapping - run_exports: {} - size: 115536 - timestamp: 1782133697736 + size: 115121 + timestamp: 1779477494775 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 sha256: b48f150db8c052c197691c9d76f59e252d3a7f01de123753d51ebf2eed1cf057 md5: 0efaf807a0b5844ce5f605bd9b668281 @@ -17747,9 +15810,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - x264 >=1!164.3095,<1!165 size: 1000661 timestamp: 1660324722559 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 @@ -17761,9 +15821,6 @@ packages: license: GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - weak: - - x265 >=3.5,<3.6.0a0 size: 1018181 timestamp: 1646610147365 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda @@ -17775,9 +15832,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util >=0.4.1,<0.5.0a0 size: 21517 timestamp: 1750437961489 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-cursor-0.1.6-he30d5cf_0.conda @@ -17792,9 +15846,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-cursor >=0.1.6,<0.2.0a0 size: 21639 timestamp: 1763367131001 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-image-0.4.0-h5c728e9_2.conda @@ -17807,9 +15858,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-image >=0.4.0,<0.5.0a0 size: 24910 timestamp: 1718880504308 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda @@ -17821,9 +15869,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-keysyms >=0.4.1,<0.5.0a0 size: 14343 timestamp: 1718846624153 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda @@ -17835,9 +15880,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-renderutil >=0.3.10,<0.4.0a0 size: 18139 timestamp: 1718849914457 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda @@ -17849,23 +15891,19 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xcb-util-wm >=0.4.2,<0.5.0a0 size: 50772 timestamp: 1718845072660 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.48-h80f16a2_0.conda - sha256: 96078068df25ddccc60958be740e6fa99efb1e0fa2dae2f84e775201bf84d70c - md5: 3dbc6d9e1f8a8768e7ef9f57585a43ca +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.47-he30d5cf_0.conda + sha256: ec7ff9dffbd41faa31a30fa0724699f05bca000d57c745a195ecdb56888a8605 + md5: 4ac707a4279972357712af099cd1ae50 depends: - libgcc >=14 - xorg-libx11 >=1.8.13,<2.0a0 license: MIT license_family: MIT purls: [] - run_exports: {} - size: 442725 - timestamp: 1782027381059 + size: 399629 + timestamp: 1772021320967 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 @@ -17874,9 +15912,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libice >=1.1.2,<2.0a0 size: 60433 timestamp: 1734229908988 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda @@ -17889,9 +15924,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libsm >=1.2.6,<2.0a0 size: 28701 timestamp: 1741897678254 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda @@ -17903,9 +15935,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libx11 >=1.8.13,<2.0a0 size: 869058 timestamp: 1770819244991 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda @@ -17916,9 +15945,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxau >=1.0.12,<2.0a0 size: 16317 timestamp: 1762977521691 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxaw-1.0.16-h86ecc28_0.conda @@ -17934,7 +15960,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 331138 timestamp: 1727870334121 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.7-he30d5cf_0.conda @@ -17947,9 +15972,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxcomposite >=0.4.7,<1.0a0 size: 14915 timestamp: 1770044415607 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda @@ -17963,9 +15985,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxcursor >=1.2.3,<2.0a0 size: 34596 timestamp: 1730908388714 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda @@ -17979,9 +15998,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxdamage >=1.1.6,<2.0a0 size: 13794 timestamp: 1727891406431 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda @@ -17992,9 +16008,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxdmcp >=1.1.5,<2.0a0 size: 21039 timestamp: 1762979038025 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda @@ -18006,9 +16019,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxext >=1.3.7,<2.0a0 size: 52409 timestamp: 1769446753771 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda @@ -18020,9 +16030,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxfixes >=6.0.2,<7.0a0 size: 20704 timestamp: 1759284028146 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.3-he30d5cf_0.conda @@ -18036,9 +16043,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxi >=1.8.3,<2.0a0 size: 49292 timestamp: 1779113229775 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxinerama-1.1.6-hfae3067_0.conda @@ -18052,9 +16056,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxinerama >=1.1.6,<1.2.0a0 size: 15322 timestamp: 1769432283298 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxmu-1.3.1-he30d5cf_0.conda @@ -18068,9 +16069,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxmu >=1.3.1,<2.0a0 size: 93067 timestamp: 1769675744111 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxpm-3.5.19-he30d5cf_0.conda @@ -18087,9 +16085,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxpm >=3.5.19,<4.0a0 size: 71037 timestamp: 1776789996073 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.5-he30d5cf_0.conda @@ -18103,9 +16098,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxrandr >=1.5.5,<2.0a0 size: 31122 timestamp: 1769445286951 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda @@ -18117,9 +16109,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxrender >=0.9.12,<0.10.0a0 size: 33649 timestamp: 1734229123157 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxscrnsaver-1.2.4-h86ecc28_0.conda @@ -18132,9 +16121,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxscrnsaver >=1.2.4,<2.0a0 size: 15720 timestamp: 1750007336692 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxshmfence-1.3.3-h86ecc28_0.conda @@ -18145,9 +16131,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxshmfence >=1.3.3,<2.0a0 size: 13805 timestamp: 1734168631514 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda @@ -18161,9 +16144,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxt >=1.3.1,<2.0a0 size: 384752 timestamp: 1731860572314 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda @@ -18177,9 +16157,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxtst >=1.2.5,<2.0a0 size: 33786 timestamp: 1727964907993 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.7-he30d5cf_0.conda @@ -18192,9 +16169,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - xorg-libxxf86vm >=1.1.7,<2.0a0 size: 19148 timestamp: 1769434729220 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-he30d5cf_0.conda @@ -18205,7 +16179,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 569539 timestamp: 1766155414260 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda @@ -18216,9 +16189,6 @@ packages: license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - xxhash >=0.8.3,<0.8.4.0a0 size: 105762 timestamp: 1746457675564 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda @@ -18232,9 +16202,6 @@ packages: - xz-tools 5.8.3 he30d5cf_0 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 24330 timestamp: 1775828875434 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda @@ -18247,9 +16214,6 @@ packages: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] - run_exports: - weak: - - liblzma >=5.8.3,<6.0a0 size: 34353 timestamp: 1775828661986 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda @@ -18262,7 +16226,6 @@ packages: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later purls: [] - run_exports: {} size: 102970 timestamp: 1775828449899 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda @@ -18273,9 +16236,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - yaml >=0.2.5,<0.3.0a0 size: 88088 timestamp: 1753484092643 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda @@ -18287,9 +16247,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: - weak: - - yaml-cpp >=0.8.0,<0.9.0a0 size: 213281 timestamp: 1745308220432 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.2-py312ha4530ae_0.conda @@ -18307,7 +16264,6 @@ packages: license_family: Apache purls: - pkg:pypi/yarl?source=hash-mapping - run_exports: {} size: 153517 timestamp: 1779246158183 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zenoh-rust-abi-1.7.2.1.85.0-h4d6d557_0.conda @@ -18317,9 +16273,6 @@ packages: - __glibc >=2.17 license: Apache-2.0 OR EPL-2.0 purls: [] - run_exports: - weak: - - zenoh-rust-abi >=1.7.2.1.85.0,<1.7.2.1.85.1.0a0 size: 48766 timestamp: 1767949969738 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hec9560f_11.conda @@ -18333,9 +16286,6 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - run_exports: - weak: - - zeromq >=4.3.5,<4.4.0a0 size: 355573 timestamp: 1779123980042 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda @@ -18348,9 +16298,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - zfp >=1.0.1,<2.0a0 size: 248846 timestamp: 1766552554324 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda @@ -18361,9 +16308,6 @@ packages: license: Zlib license_family: Other purls: [] - run_exports: - weak: - - libzlib >=1.3.2,<2.0a0 size: 100515 timestamp: 1774072641977 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda @@ -18374,9 +16318,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - zstd >=1.5.7,<1.6.0a0 size: 614429 timestamp: 1764777145593 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zziplib-0.13.69-h650d8d0_2.conda @@ -18387,9 +16328,6 @@ packages: - libzlib >=1.3.1,<2.0a0 license: LGPL-2.0-or-later OR MPL-1.1 purls: [] - run_exports: - weak: - - zziplib >=0.13.69,<0.14.0a0 size: 115725 timestamp: 1719242037690 - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda @@ -18401,7 +16339,6 @@ packages: license_family: Apache purls: - pkg:pypi/absl-py?source=hash-mapping - run_exports: {} size: 109955 timestamp: 1769637168641 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.2-pyhd8ed1ab_0.conda @@ -18413,7 +16350,6 @@ packages: license_family: PSF purls: - pkg:pypi/aiohappyeyeballs?source=compressed-mapping - run_exports: {} size: 20727 timestamp: 1779297825279 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda @@ -18427,7 +16363,6 @@ packages: license_family: APACHE purls: - pkg:pypi/aiosignal?source=hash-mapping - run_exports: {} size: 13688 timestamp: 1751626573984 - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -18439,7 +16374,6 @@ packages: license_family: BSD purls: - pkg:pypi/alabaster?source=hash-mapping - run_exports: {} size: 18684 timestamp: 1733750512696 - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda @@ -18451,7 +16385,6 @@ packages: license_family: Apache purls: - pkg:pypi/argcomplete?source=hash-mapping - run_exports: {} size: 42386 timestamp: 1760975036972 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda @@ -18465,7 +16398,6 @@ packages: license_family: Apache purls: - pkg:pypi/asttokens?source=hash-mapping - run_exports: {} size: 28797 timestamp: 1763410017955 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -18478,7 +16410,6 @@ packages: license_family: MIT purls: - pkg:pypi/attrs?source=hash-mapping - run_exports: {} size: 64927 timestamp: 1773935801332 - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda @@ -18493,7 +16424,6 @@ packages: license_family: BSD purls: - pkg:pypi/babel?source=hash-mapping - run_exports: {} size: 7684321 timestamp: 1772555330347 - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda @@ -18505,7 +16435,6 @@ packages: license_family: MIT purls: - pkg:pypi/beartype?source=hash-mapping - run_exports: {} size: 1063520 timestamp: 1765715830980 - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda @@ -18517,7 +16446,6 @@ packages: license_family: MIT purls: - pkg:pypi/blinker?source=hash-mapping - run_exports: {} size: 13934 timestamp: 1731096548765 - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda @@ -18534,19 +16462,17 @@ packages: license_family: BSD purls: - pkg:pypi/breathe?source=hash-mapping - run_exports: {} size: 78954 timestamp: 1740314139074 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - sha256: f8e3c730fa14ee3f170493779f06522c4acf89169f43db4f039727709b6419cf - md5: a9965dd99f683c5f444428f896635716 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda + sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b + md5: 489b8e97e666c93f68fdb35c3c9b957f depends: - __unix license: ISC purls: [] - run_exports: {} - size: 128866 - timestamp: 1781708962055 + size: 129868 + timestamp: 1779289852439 - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda sha256: fe602164dc1920551e1452543e22338d55d8a879959f12598c9674cf295c6341 md5: 3e500faf80e42f26d422d849877d48c4 @@ -18561,20 +16487,18 @@ packages: license_family: BSD purls: - pkg:pypi/catkin-pkg?source=hash-mapping - run_exports: {} size: 54106 timestamp: 1757558592553 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda - sha256: 6c13620e458ba43278379d0cdacc30c497336bddfda81681fd50d114a65c702f - md5: c13824fedced67005d3832c152fe9c2f +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda + sha256: 645655a3510e38e625da136595f3f16f2130c3263630cc3bc8f60f619ddbe490 + md5: 9fefff2f745ea1cc2ef15211a20c054a depends: - python >=3.10 license: ISC purls: - pkg:pypi/certifi?source=compressed-mapping - run_exports: {} - size: 133877 - timestamp: 1781719949728 + size: 134201 + timestamp: 1779285131141 - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda sha256: aa589352e61bb221351a79e5946d56916e3c595783994884accdb3b97fe9d449 md5: 381bd45fb7aa032691f3063aff47e3a1 @@ -18584,7 +16508,6 @@ packages: license_family: MIT purls: - pkg:pypi/cfgv?source=hash-mapping - run_exports: {} size: 13589 timestamp: 1763607964133 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda @@ -18596,7 +16519,6 @@ packages: license_family: MIT purls: - pkg:pypi/charset-normalizer?source=hash-mapping - run_exports: {} size: 58872 timestamp: 1775127203018 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda @@ -18610,7 +16532,6 @@ packages: license_family: BSD purls: - pkg:pypi/click?source=compressed-mapping - run_exports: {} size: 104999 timestamp: 1779900548735 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda @@ -18624,7 +16545,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-argcomplete?source=hash-mapping - run_exports: {} size: 18692 timestamp: 1735452378252 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda @@ -18637,7 +16557,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-bash?source=hash-mapping - run_exports: {} size: 19001 timestamp: 1735646679519 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda @@ -18651,12 +16570,11 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-cd?source=hash-mapping - run_exports: {} size: 16858 timestamp: 1735513271475 -- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda - sha256: 559ce6316dc52cd6d1874825a64da88d3b6d3c3472b6c2f3077e2b22c9417c08 - md5: 01fb794eff29e9b0011f6bc5ab9c39d4 +- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.29-pyhd8ed1ab_1.conda + sha256: edc01069635b0bb7d9a58c1f36371d1c841ecf90b8e74397df418436209ce01c + md5: b5b23d06f0def5724475bd12365f1aa5 depends: - colcon-core - colcon-library-path @@ -18666,9 +16584,8 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-cmake?source=hash-mapping - run_exports: {} - size: 30528 - timestamp: 1781648219269 + size: 26257 + timestamp: 1757616401522 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda sha256: b30d73297ab86e5117c9eebf11d6bc86616be6a7e0ead9d14fec77077c760261 md5: 16256753ef2123996897bc6773080893 @@ -18689,7 +16606,6 @@ packages: purls: - pkg:pypi/colcon-core?source=hash-mapping - pkg:pypi/colcon-distutils-commands?source=hash-mapping - run_exports: {} size: 96785 timestamp: 1780438171992 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda @@ -18703,7 +16619,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-defaults?source=hash-mapping - run_exports: {} size: 15580 timestamp: 1757616344706 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda @@ -18716,7 +16631,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-devtools?source=hash-mapping - run_exports: {} size: 14943 timestamp: 1757616967604 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda @@ -18729,7 +16643,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-library-path?source=hash-mapping - run_exports: {} size: 13505 timestamp: 1757615646068 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-metadata-0.2.5-pyhd8ed1ab_1.conda @@ -18743,22 +16656,20 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-metadata?source=hash-mapping - run_exports: {} size: 20031 timestamp: 1757624342935 -- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.14-pyhd8ed1ab_0.conda - sha256: 832624fa22e6e6ce6dd55ad1cea9c719c41e6c8279ff44e0deaba71c797d8bda - md5: 283bd31fe9199004e57966fe177d0dd6 +- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-output-0.2.13-pyhd8ed1ab_0.conda + sha256: ce2802f9c76f4502d17ff47f76f634449a1ae10fded0bed6a65c05d35ccafb33 + md5: d0294b947e6256444f31979612468bba depends: - colcon-core >=0.3.8 - python >=3.5 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/colcon-output?source=compressed-mapping - run_exports: {} - size: 21527 - timestamp: 1782140571074 + - pkg:pypi/colcon-output?source=hash-mapping + size: 16174 + timestamp: 1676526311561 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-information-0.4.1-pyhd8ed1ab_0.conda sha256: 4b7518952798eefcabfac2a7bb7247c04c204ee3678b83500ed31ced95c907c9 md5: efa0bd9a29645cf88d7cd3297b518ba8 @@ -18769,7 +16680,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-package-information?source=hash-mapping - run_exports: {} size: 19302 timestamp: 1775237925157 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-package-selection-0.2.10-pyhd8ed1ab_1.conda @@ -18782,7 +16692,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-package-selection?source=hash-mapping - run_exports: {} size: 18069 timestamp: 1757614388574 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-parallel-executor-0.4.0-pyhe01879c_0.conda @@ -18796,7 +16705,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-parallel-executor?source=hash-mapping - run_exports: {} size: 20688 timestamp: 1755156877864 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-pkg-config-0.1.0-pyhd8ed1ab_1.conda @@ -18809,7 +16717,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-pkg-config?source=hash-mapping - run_exports: {} size: 13616 timestamp: 1775238006255 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-powershell-0.5.0-pyhd8ed1ab_0.conda @@ -18822,7 +16729,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-powershell?source=hash-mapping - run_exports: {} size: 17608 timestamp: 1770791211378 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-python-setup-py-0.2.9-pyhff2d567_1.conda @@ -18836,7 +16742,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-python-setup-py?source=hash-mapping - run_exports: {} size: 16561 timestamp: 1753971248803 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-recursive-crawl-0.2.3-pyhd8ed1ab_0.conda @@ -18849,7 +16754,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-recursive-crawl?source=hash-mapping - run_exports: {} size: 13254 timestamp: 1696534627965 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-ros-0.5.0-pyhd8ed1ab_0.conda @@ -18867,7 +16771,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-ros?source=hash-mapping - run_exports: {} size: 23852 timestamp: 1719301582281 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-test-result-0.3.8-pyhd8ed1ab_1.conda @@ -18880,7 +16783,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-test-result?source=hash-mapping - run_exports: {} size: 17214 timestamp: 1757615650730 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda @@ -18893,7 +16795,6 @@ packages: license_family: APACHE purls: - pkg:pypi/colcon-zsh?source=hash-mapping - run_exports: {} size: 18905 timestamp: 1735357634338 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -18905,7 +16806,6 @@ packages: license_family: BSD purls: - pkg:pypi/colorama?source=hash-mapping - run_exports: {} size: 27011 timestamp: 1733218222191 - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda @@ -18918,9 +16818,52 @@ packages: license_family: MIT purls: - pkg:pypi/coloredlogs?source=hash-mapping - run_exports: {} size: 43758 timestamp: 1733928076798 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + sha256: 65b0721f97be14265c8329ecb4e78a7e1233d0229878ffca5d15b98d90ba3977 + md5: 54bd44d384ce8d5ab5628a8950392b5a + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 48977047 + timestamp: 1769057035337 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + sha256: 2723ebfff00f4716f37de1bdf109f9cf016238e64f68e08c4c2c23a0aa16d24a + md5: 809e81831a385c920972cbd737af56aa + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 33322768 + timestamp: 1769057129616 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda + sha256: ba879743bae391ca774716a8db60c7b36c8c14fdc6f83535602ce303c27b985d + md5: 12fe6c056aec14f14ee8b5d38b8247f0 + depends: + - compiler-rt21_linux-64 21.1.8 hffcefe0_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16197 + timestamp: 1769057142076 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda + sha256: cb5cb5b360a854cb0b166ee956a696bef049e8aeead5af4305795d66d74ddf13 + md5: 20acd345035acaf4dc6df43c2e02ad32 + depends: + - compiler-rt21_linux-aarch64 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16273 + timestamp: 1769057250175 - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda sha256: 096940199e2145bd8bd9834ad8ab0f56f721da6fc749e8b13d04d8a69adad208 md5: 58e88566bfbbf9d3ffbeda3290e7f4f0 @@ -18930,7 +16873,6 @@ packages: license_family: MIT purls: - pkg:pypi/construct?source=hash-mapping - run_exports: {} size: 58104 timestamp: 1701541902326 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda @@ -18943,7 +16885,6 @@ packages: license_family: BSD purls: - pkg:pypi/cycler?source=hash-mapping - run_exports: {} size: 14778 timestamp: 1764466758386 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -18955,7 +16896,6 @@ packages: license_family: BSD purls: - pkg:pypi/decorator?source=compressed-mapping - run_exports: {} size: 16102 timestamp: 1779115228886 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda @@ -18968,22 +16908,20 @@ packages: license_family: MIT purls: - pkg:pypi/deprecated?source=hash-mapping - run_exports: {} size: 15896 timestamp: 1768934186726 -- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - sha256: e2753997b8bd34205f42be01b8bab8037423dc30c02a1ec12de23e5b4c0b0a2e - md5: 58638f77697c4f6726753eb8be34818b +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.2-pyhcf101f3_0.conda + sha256: 7fb146a2e483e1b8d8be777bc7d03e5fa4974e4225a0774d4a9a4a5e3ea44c01 + md5: 141ec0ac00f1c946cb058d4e710f269a depends: - python >=3.10 - python license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/distlib?source=compressed-mapping - run_exports: {} - size: 303705 - timestamp: 1781320269259 + - pkg:pypi/distlib?source=hash-mapping + size: 303675 + timestamp: 1780988738861 - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda sha256: 5603c7d0321963bb9b4030eadabc3fd7ca6103a38475b4e0ed13ed6d97c86f4e md5: 0a2014fd9860f8b1eaa0b1f3d3771a08 @@ -18993,7 +16931,6 @@ packages: license_family: APACHE purls: - pkg:pypi/distro?source=hash-mapping - run_exports: {} size: 41773 timestamp: 1734729953882 - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda @@ -19015,7 +16952,6 @@ packages: license: ISC purls: - pkg:pypi/dnspython?source=hash-mapping - run_exports: {} size: 196500 timestamp: 1757292856922 - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda @@ -19026,7 +16962,6 @@ packages: license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 purls: - pkg:pypi/docutils?source=hash-mapping - run_exports: {} size: 402700 timestamp: 1733217860944 - conda: https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 @@ -19038,7 +16973,6 @@ packages: license_family: GPL purls: - pkg:pypi/empy?source=hash-mapping - run_exports: {} size: 40210 timestamp: 1586444722817 - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda @@ -19050,7 +16984,6 @@ packages: license_family: APACHE purls: - pkg:pypi/etils?source=hash-mapping - run_exports: {} size: 787805 timestamp: 1741838050970 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda @@ -19062,7 +16995,6 @@ packages: license: MIT and PSF-2.0 purls: - pkg:pypi/exceptiongroup?source=hash-mapping - run_exports: {} size: 21333 timestamp: 1763918099466 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda @@ -19074,7 +17006,6 @@ packages: license_family: MIT purls: - pkg:pypi/executing?source=hash-mapping - run_exports: {} size: 30753 timestamp: 1756729456476 - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda @@ -19090,20 +17021,18 @@ packages: license_family: BSD purls: - pkg:pypi/fabric?source=hash-mapping - run_exports: {} size: 55825 timestamp: 1775457354890 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda - sha256: feb5c13cc8f256212a979783a7645abd7e27925c51ee5431babbc0efc661cdfd - md5: 66f138d7a6dffb5c959cc4bf6dc2b797 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.1-pyhd8ed1ab_0.conda + sha256: ab7c43874d451c36a11b1516a3fbdf23803c05fcb01063a3877549dfb3e34ec4 + md5: 917880ebad7632e8a52eada085b98ce9 depends: - python >=3.10 license: Unlicense purls: - - pkg:pypi/filelock?source=compressed-mapping - run_exports: {} - size: 36989 - timestamp: 1781381078337 + - pkg:pypi/filelock?source=hash-mapping + size: 34899 + timestamp: 1780521975987 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda sha256: a32e511ea71a9667666935fd9f497f00bcc6ed0099ef04b9416ac24606854d58 md5: 04a55140685296b25b79ad942264c0ef @@ -19116,7 +17045,6 @@ packages: license_family: MIT purls: - pkg:pypi/flake8?source=hash-mapping - run_exports: {} size: 111916 timestamp: 1750968083921 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda @@ -19129,7 +17057,6 @@ packages: license_family: GPL2 purls: - pkg:pypi/flake8-builtins?source=hash-mapping - run_exports: {} size: 19501 timestamp: 1761594405382 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -19142,7 +17069,6 @@ packages: license_family: MIT purls: - pkg:pypi/flake8-comprehensions?source=hash-mapping - run_exports: {} size: 14049 timestamp: 1757526877129 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-docstrings-1.7.0-pyhd8ed1ab_0.conda @@ -19156,7 +17082,6 @@ packages: license_family: MIT purls: - pkg:pypi/flake8-docstrings?source=hash-mapping - run_exports: {} size: 10395 timestamp: 1675285794906 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-import-order-0.19.2-pyhd8ed1ab_0.conda @@ -19171,7 +17096,6 @@ packages: license_family: LGPL purls: - pkg:pypi/flake8-import-order?source=hash-mapping - run_exports: {} size: 21041 timestamp: 1750969641622 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-quotes-3.4.0-pyhd8ed1ab_1.conda @@ -19184,7 +17108,6 @@ packages: license_family: MIT purls: - pkg:pypi/flake8-quotes?source=hash-mapping - run_exports: {} size: 14776 timestamp: 1735335323771 - conda: https://conda.anaconda.org/conda-forge/noarch/flask-3.1.3-pyhcf101f3_1.conda @@ -19203,7 +17126,6 @@ packages: license_family: BSD purls: - pkg:pypi/flask?source=hash-mapping - run_exports: {} size: 87428 timestamp: 1771489274528 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -19212,7 +17134,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 397370 timestamp: 1566932522327 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -19221,7 +17142,6 @@ packages: license: OFL-1.1 license_family: Other purls: [] - run_exports: {} size: 96530 timestamp: 1620479909603 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -19230,7 +17150,6 @@ packages: license: OFL-1.1 license_family: Other purls: [] - run_exports: {} size: 700814 timestamp: 1620479612257 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda @@ -19239,7 +17158,6 @@ packages: license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other purls: [] - run_exports: {} size: 1620504 timestamp: 1727511233259 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 @@ -19250,7 +17168,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 3667 timestamp: 1566974674465 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda @@ -19264,21 +17181,19 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 4059 timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda - sha256: fe0156e6d658be3531aad2a99e42e8ad1ee23c69837d469c44c1b6010373913d - md5: 7d7e6c826ba0743fc491ebee0e7b899c +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda + sha256: 079701b4ff3b317a1a158cabd48cf2b856b8b8d3ef44f152809d9acf20cc8e10 + md5: 2c11aa96ea85ced419de710c1c3a78ff depends: - python >=3.10 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/fsspec?source=compressed-mapping - run_exports: {} - size: 149709 - timestamp: 1781615868173 + - pkg:pypi/fsspec?source=hash-mapping + size: 149694 + timestamp: 1777547807038 - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda sha256: 1095cdcb8bb889d50c399e07609b7217a27f8305e4ac70b3f46b9e0d94ed4760 md5: 3057964958da1fc0ec119951dd6775e2 @@ -19287,7 +17202,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 37429 timestamp: 1770108326508 - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda @@ -19300,7 +17214,6 @@ packages: license_family: BSD purls: - pkg:pypi/gitdb?source=hash-mapping - run_exports: {} size: 53136 timestamp: 1735887290843 - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda @@ -19314,7 +17227,6 @@ packages: license_family: BSD purls: - pkg:pypi/gitpython?source=hash-mapping - run_exports: {} size: 162193 timestamp: 1778065820061 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda @@ -19329,21 +17241,19 @@ packages: license_family: MIT purls: - pkg:pypi/h2?source=hash-mapping - run_exports: {} size: 95967 timestamp: 1756364871835 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - sha256: fdcea5d7cb314485d3907192ef024c704311548c5b0cbeb390cd1951051e29d2 - md5: b395909221b9bd1df066e5930e18855b +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - - python >=3.10 + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/hpack?source=compressed-mapping - run_exports: {} - size: 32884 - timestamp: 1782283986153 + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda sha256: fa2071da7fab758c669e78227e6094f6b3608228740808a6de5d6bce83d9e52d md5: 7fe569c10905402ed47024fc481bb371 @@ -19354,7 +17264,6 @@ packages: license_family: MIT purls: - pkg:pypi/humanfriendly?source=hash-mapping - run_exports: {} size: 73563 timestamp: 1733928021866 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -19366,7 +17275,6 @@ packages: license_family: MIT purls: - pkg:pypi/hyperframe?source=hash-mapping - run_exports: {} size: 17397 timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda @@ -19379,22 +17287,20 @@ packages: license_family: MIT purls: - pkg:pypi/identify?source=hash-mapping - run_exports: {} size: 79757 timestamp: 1776455344188 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda - sha256: c75632ea624aa450a394f570749420c5a2e0997d0216bc29d5d45b0f39df0426 - md5: 577b04680ae422adb86fc60d7b940659 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.17-pyhcf101f3_0.conda + sha256: f9fe1f9e539c544405ccb7ba632d4ba79edf243c05554d76ace073158a80b691 + md5: c75e517ebd7a5c5272fe111e8b162228 depends: - python >=3.10 - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/idna?source=compressed-mapping - run_exports: {} - size: 163869 - timestamp: 1781620148226 + - pkg:pypi/idna?source=hash-mapping + size: 56858 + timestamp: 1779999227630 - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda sha256: 5a047f9eac290e679b4e6f6f4cbfcc5acdfbf031a4f06824d4ddb590cdbb850b md5: 92617c2ba2847cca7a6ed813b6f4ab79 @@ -19404,7 +17310,6 @@ packages: license_family: MIT purls: - pkg:pypi/imagesize?source=hash-mapping - run_exports: {} size: 15729 timestamp: 1773752188889 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -19418,7 +17323,6 @@ packages: license_family: APACHE purls: - pkg:pypi/importlib-metadata?source=compressed-mapping - run_exports: {} size: 34766 timestamp: 1779714582554 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda @@ -19433,7 +17337,6 @@ packages: license_family: APACHE purls: - pkg:pypi/importlib-resources?source=hash-mapping - run_exports: {} size: 34809 timestamp: 1776068839274 - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda @@ -19445,7 +17348,6 @@ packages: license_family: MIT purls: - pkg:pypi/iniconfig?source=hash-mapping - run_exports: {} size: 13387 timestamp: 1760831448842 - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda @@ -19457,7 +17359,6 @@ packages: license_family: BSD purls: - pkg:pypi/invoke?source=hash-mapping - run_exports: {} size: 132825 timestamp: 1760146119847 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.14.1-pyh53cf698_0.conda @@ -19482,7 +17383,6 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - run_exports: {} size: 652893 timestamp: 1780654403616 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda @@ -19495,7 +17395,6 @@ packages: license_family: BSD purls: - pkg:pypi/ipython-pygments-lexers?source=hash-mapping - run_exports: {} size: 13993 timestamp: 1737123723464 - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda @@ -19507,7 +17406,6 @@ packages: license_family: BSD purls: - pkg:pypi/itsdangerous?source=hash-mapping - run_exports: {} size: 19180 timestamp: 1733308353037 - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.7-pyhd8ed1ab_0.conda @@ -19520,22 +17418,19 @@ packages: license_family: MIT purls: - pkg:pypi/jaxtyping?source=hash-mapping - run_exports: {} size: 48435 timestamp: 1769819488096 -- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda - sha256: 744143551c1c7b528b82533fb641b9d7db20b2203abc4c2635c387fa6c089fc3 - md5: c2b3d37aa1411031126036ee76a8a861 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: - - python >=3.10 - - parso >=0.8.6,<0.9.0 - - python + - parso >=0.8.3,<0.9.0 + - python >=3.9 license: Apache-2.0 AND MIT purls: - - pkg:pypi/jedi?source=compressed-mapping - run_exports: {} - size: 2715215 - timestamp: 1782251948616 + - pkg:pypi/jedi?source=hash-mapping + size: 843646 + timestamp: 1733300981994 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b md5: 04558c96691bed63104678757beb4f8d @@ -19547,7 +17442,6 @@ packages: license_family: BSD purls: - pkg:pypi/jinja2?source=hash-mapping - run_exports: {} size: 120685 timestamp: 1764517220861 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda @@ -19558,7 +17452,6 @@ packages: license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 1278712 timestamp: 1765578681495 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda @@ -19569,7 +17462,6 @@ packages: license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL purls: [] - run_exports: {} size: 1248134 timestamp: 1765578613607 - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda @@ -19581,7 +17473,6 @@ packages: license_family: MIT purls: - pkg:pypi/lark-parser?source=hash-mapping - run_exports: {} size: 86134 timestamp: 1725742423890 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda @@ -19592,7 +17483,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 3091520 timestamp: 1778268364856 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda @@ -19602,7 +17492,6 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 3095909 timestamp: 1778268932148 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda @@ -19613,7 +17502,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 2346647 timestamp: 1778268433769 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda @@ -19623,7 +17511,6 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 2353893 timestamp: 1778268665954 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda @@ -19634,7 +17521,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 20199810 timestamp: 1778268389428 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda @@ -19644,7 +17530,6 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 20765069 timestamp: 1778268963689 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda @@ -19655,7 +17540,6 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - run_exports: {} size: 17587589 timestamp: 1778268454520 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda @@ -19665,7 +17549,6 @@ packages: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - run_exports: {} size: 17627362 timestamp: 1778268687968 - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda @@ -19678,7 +17561,6 @@ packages: license_family: MIT purls: - pkg:pypi/loguru?source=hash-mapping - run_exports: {} size: 59696 timestamp: 1746634858826 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda @@ -19691,7 +17573,6 @@ packages: license_family: MIT purls: - pkg:pypi/markdown-it-py?source=hash-mapping - run_exports: {} size: 69017 timestamp: 1778169663339 - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda @@ -19704,7 +17585,6 @@ packages: license_family: BSD purls: - pkg:pypi/matplotlib-inline?source=hash-mapping - run_exports: {} size: 15725 timestamp: 1778264403247 - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda @@ -19716,7 +17596,6 @@ packages: license_family: MIT purls: - pkg:pypi/mccabe?source=hash-mapping - run_exports: {} size: 12934 timestamp: 1733216573915 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda @@ -19728,7 +17607,6 @@ packages: license_family: MIT purls: - pkg:pypi/mdurl?source=hash-mapping - run_exports: {} size: 14465 timestamp: 1733255681319 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda @@ -19740,7 +17618,6 @@ packages: license_family: Apache purls: - pkg:pypi/munkres?source=hash-mapping - run_exports: {} size: 15851 timestamp: 1749895533014 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda @@ -19752,7 +17629,6 @@ packages: license_family: MIT purls: - pkg:pypi/mypy-extensions?source=hash-mapping - run_exports: {} size: 11766 timestamp: 1745776666688 - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda @@ -19765,7 +17641,6 @@ packages: license_family: BSD purls: - pkg:pypi/nodeenv?source=hash-mapping - run_exports: {} size: 40866 timestamp: 1766261270149 - conda: https://conda.anaconda.org/conda-forge/noarch/notify2-0.3.1-pyhd8ed1ab_0.tar.bz2 @@ -19778,7 +17653,6 @@ packages: license_family: BSD purls: - pkg:pypi/notify2?source=hash-mapping - run_exports: {} size: 11122 timestamp: 1647371622387 - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.610.43-pyhd8ed1ab_0.conda @@ -19793,7 +17667,6 @@ packages: license_family: BSD purls: - pkg:pypi/nvidia-ml-py?source=hash-mapping - run_exports: {} size: 50107 timestamp: 1780355713540 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda @@ -19806,7 +17679,6 @@ packages: license_family: APACHE purls: - pkg:pypi/packaging?source=hash-mapping - run_exports: {} size: 91574 timestamp: 1777103621679 - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda @@ -19822,7 +17694,6 @@ packages: license_family: LGPL purls: - pkg:pypi/paramiko?source=hash-mapping - run_exports: {} size: 159896 timestamp: 1755102147074 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda @@ -19835,7 +17706,6 @@ packages: license_family: MIT purls: - pkg:pypi/parso?source=hash-mapping - run_exports: {} size: 82472 timestamp: 1777722955579 - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda @@ -19847,7 +17717,6 @@ packages: license_family: MOZILLA purls: - pkg:pypi/pathspec?source=hash-mapping - run_exports: {} size: 56559 timestamp: 1777271601895 - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 @@ -19860,7 +17729,6 @@ packages: license_family: MIT purls: - pkg:pypi/pep517?source=hash-mapping - run_exports: {} size: 19044 timestamp: 1667916747996 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda @@ -19872,7 +17740,6 @@ packages: license: ISC purls: - pkg:pypi/pexpect?source=hash-mapping - run_exports: {} size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda @@ -19885,7 +17752,6 @@ packages: license_family: MIT purls: - pkg:pypi/platformdirs?source=compressed-mapping - run_exports: {} size: 26308 timestamp: 1779972894916 - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda @@ -19897,7 +17763,6 @@ packages: license_family: MIT purls: - pkg:pypi/playsound?source=hash-mapping - run_exports: {} size: 12785 timestamp: 1735588579558 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda @@ -19910,7 +17775,6 @@ packages: license_family: MIT purls: - pkg:pypi/pluggy?source=hash-mapping - run_exports: {} size: 25877 timestamp: 1764896838868 - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda @@ -19922,7 +17786,6 @@ packages: license_family: BSD purls: - pkg:pypi/ply?source=hash-mapping - run_exports: {} size: 49052 timestamp: 1733239818090 - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda @@ -19939,7 +17802,6 @@ packages: license_family: MIT purls: - pkg:pypi/pre-commit?source=hash-mapping - run_exports: {} size: 201606 timestamp: 1776858157327 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda @@ -19954,7 +17816,6 @@ packages: license_family: BSD purls: - pkg:pypi/prompt-toolkit?source=hash-mapping - run_exports: {} size: 273927 timestamp: 1756321848365 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -19965,7 +17826,6 @@ packages: license: ISC purls: - pkg:pypi/ptyprocess?source=hash-mapping - run_exports: {} size: 19457 timestamp: 1733302371990 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -19977,7 +17837,6 @@ packages: license_family: MIT purls: - pkg:pypi/pure-eval?source=hash-mapping - run_exports: {} size: 16668 timestamp: 1733569518868 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda @@ -19993,7 +17852,6 @@ packages: license_family: BSD purls: - pkg:pypi/pybind11?source=hash-mapping - run_exports: {} size: 247963 timestamp: 1775004608640 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda @@ -20002,9 +17860,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - pybind11-abi ==11 size: 14671 timestamp: 1752769938071 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda @@ -20020,7 +17875,6 @@ packages: license_family: BSD purls: - pkg:pypi/pybind11-global?source=hash-mapping - run_exports: {} size: 243898 timestamp: 1775004520432 - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda @@ -20032,7 +17886,6 @@ packages: license_family: MIT purls: - pkg:pypi/pycodestyle?source=hash-mapping - run_exports: {} size: 35182 timestamp: 1750616054854 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda @@ -20045,7 +17898,6 @@ packages: license_family: BSD purls: - pkg:pypi/pycparser?source=compressed-mapping - run_exports: {} size: 55886 timestamp: 1779293633166 - conda: https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda @@ -20059,7 +17911,6 @@ packages: license_family: MIT purls: - pkg:pypi/pydocstyle?source=hash-mapping - run_exports: {} size: 40236 timestamp: 1733261742916 - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda @@ -20074,7 +17925,6 @@ packages: license_family: MIT purls: - pkg:pypi/pydot?source=hash-mapping - run_exports: {} size: 150656 timestamp: 1766345630713 - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda @@ -20086,7 +17936,6 @@ packages: license_family: MIT purls: - pkg:pypi/pyflakes?source=hash-mapping - run_exports: {} size: 59592 timestamp: 1750492011671 - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda @@ -20099,7 +17948,6 @@ packages: license_family: MIT purls: - pkg:pypi/glfw?source=hash-mapping - run_exports: {} size: 31744 timestamp: 1757704430445 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda @@ -20111,7 +17959,6 @@ packages: license_family: BSD purls: - pkg:pypi/pygments?source=hash-mapping - run_exports: {} size: 893031 timestamp: 1774796815820 - conda: https://conda.anaconda.org/conda-forge/noarch/pyopengl-3.1.10-pyha804496_2.conda @@ -20124,7 +17971,6 @@ packages: license: LicenseRef-pyopengl purls: - pkg:pypi/pyopengl?source=hash-mapping - run_exports: {} size: 1327162 timestamp: 1756496351413 - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -20137,7 +17983,6 @@ packages: license_family: MIT purls: - pkg:pypi/pyparsing?source=hash-mapping - run_exports: {} size: 110893 timestamp: 1769003998136 - conda: https://conda.anaconda.org/conda-forge/noarch/pyqt-builder-1.18.2-pyhd8ed1ab_1.conda @@ -20152,7 +17997,6 @@ packages: license_family: BSD purls: - pkg:pypi/pyqt-builder?source=hash-mapping - run_exports: {} size: 2952282 timestamp: 1766858321453 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -20165,7 +18009,6 @@ packages: license_family: BSD purls: - pkg:pypi/pysocks?source=hash-mapping - run_exports: {} size: 21085 timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/noarch/pysoundcard-0.4.6-pyha804496_0.conda @@ -20181,7 +18024,6 @@ packages: license_family: BSD purls: - pkg:pypi/soundcard?source=hash-mapping - run_exports: {} size: 42272 timestamp: 1776005577113 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda @@ -20203,7 +18045,6 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=hash-mapping - run_exports: {} size: 299984 timestamp: 1775644472530 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda @@ -20219,7 +18060,6 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-cov?source=hash-mapping - run_exports: {} size: 29559 timestamp: 1774139250481 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda @@ -20232,7 +18072,6 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-mock?source=hash-mapping - run_exports: {} size: 22968 timestamp: 1758101248317 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda @@ -20245,7 +18084,6 @@ packages: license_family: MOZILLA purls: - pkg:pypi/pytest-repeat?source=hash-mapping - run_exports: {} size: 10537 timestamp: 1744061283541 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.3-pyhd8ed1ab_0.conda @@ -20259,7 +18097,6 @@ packages: license_family: OTHER purls: - pkg:pypi/pytest-rerunfailures?source=hash-mapping - run_exports: {} size: 21401 timestamp: 1779715182649 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda @@ -20273,12 +18110,11 @@ packages: license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping - run_exports: {} size: 233310 timestamp: 1751104122689 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - sha256: 6914da740f6e3ec44ffb2f687dbc9c33abf084e42f34e3a8bb8235e475850619 - md5: 7a9095c9300d1b50b1785ca9bc4cadae +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.0-pyhcf101f3_0.conda + sha256: dd709df1ef4e44ea9b6dd48b6e53c062efcc12850b3116b2884cfbef1aa4bd92 + md5: fb1e5c138e2d933e59b3fa0462acc5e6 depends: - python >=3.10 - filelock >=3.15.4 @@ -20288,9 +18124,8 @@ packages: license_family: MIT purls: - pkg:pypi/python-discovery?source=compressed-mapping - run_exports: {} - size: 35514 - timestamp: 1781257630962 + size: 34924 + timestamp: 1779967197357 - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda sha256: 1933243d9f839bb7bc6c9b75481b6445f50f8b727eb926086e8a2a347fb0467d md5: 611207751a2c0b5b999b07b78985d7a0 @@ -20300,7 +18135,6 @@ packages: license_family: Apache purls: - pkg:pypi/flatbuffers?source=hash-mapping - run_exports: {} size: 34827 timestamp: 1758880404905 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda @@ -20312,7 +18146,6 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - run_exports: {} size: 6958 timestamp: 1752805918820 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda @@ -20331,7 +18164,6 @@ packages: license_family: APACHE purls: - pkg:pypi/requests?source=compressed-mapping - run_exports: {} size: 68709 timestamp: 1778851103479 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.4-pyhcf101f3_0.conda @@ -20347,7 +18179,6 @@ packages: license_family: MIT purls: - pkg:pypi/rich?source=hash-mapping - run_exports: {} size: 208480 timestamp: 1775880677603 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda @@ -20358,7 +18189,6 @@ packages: license: 0BSD OR CC0-1.0 purls: - pkg:pypi/roman-numerals?source=hash-mapping - run_exports: {} size: 13814 timestamp: 1766003022813 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda @@ -20370,7 +18200,6 @@ packages: license: 0BSD OR CC0-1.0 purls: - pkg:pypi/roman-numerals-py?source=hash-mapping - run_exports: {} size: 11074 timestamp: 1766025162370 - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda @@ -20386,7 +18215,6 @@ packages: license_family: BSD purls: - pkg:pypi/rosdistro?source=hash-mapping - run_exports: {} size: 47691 timestamp: 1747826651335 - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda @@ -20401,21 +18229,8 @@ packages: license_family: BSD purls: - pkg:pypi/rospkg?source=hash-mapping - run_exports: {} size: 31852 timestamp: 1766125246079 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - sha256: 5648c6537f45ff93086d73eba6c05f301600c00976fc7816266106cd175d8582 - md5: eb5d17c41bf545c0bc1bf7d545825c5a - depends: - - __unix - constrains: - - rust >=1.91.1,<1.91.2.0a0 - license: MIT - license_family: MIT - run_exports: {} - size: 37290717 - timestamp: 1762816473116 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda sha256: 8e86745ce1655e126d52b6a1908e4cd8721dc031fc944dbc5ba12838f6f945a5 md5: c6a198001bc91ef594731364d10dbce3 @@ -20425,21 +18240,9 @@ packages: - rust >=1.96.0,<1.96.1.0a0 license: MIT license_family: MIT - run_exports: {} + purls: [] size: 35596879 timestamp: 1780046657529 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - sha256: 21925ee23f5a7522a191a67f640a765ff67c4f028db95d6f41634e22449cd4af - md5: 2a3345e21b15b8659310e01e9c6eda60 - depends: - - __unix - constrains: - - rust >=1.91.1,<1.91.2.0a0 - license: MIT - license_family: MIT - run_exports: {} - size: 38139898 - timestamp: 1762816495933 - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda sha256: e8c453fc331eedd6b7a02356d177802a2c03b0bc6490d86c0e63c15ef172d53f md5: cbbc8546ba8381cb792744564cec0430 @@ -20449,7 +18252,7 @@ packages: - rust >=1.96.0,<1.96.1.0a0 license: MIT license_family: MIT - run_exports: {} + purls: [] size: 36676677 timestamp: 1780046295074 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda @@ -20461,7 +18264,6 @@ packages: license_family: MIT purls: - pkg:pypi/setuptools?source=hash-mapping - run_exports: {} size: 462324 timestamp: 1692383535614 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda @@ -20471,7 +18273,6 @@ packages: - python >=3.10 license: MIT license_family: MIT - run_exports: {} size: 639697 timestamp: 1773074868565 - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda @@ -20483,7 +18284,6 @@ packages: license_family: MIT purls: - pkg:pypi/simpleeval?source=hash-mapping - run_exports: {} size: 24617 timestamp: 1773753246067 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -20496,7 +18296,6 @@ packages: license_family: MIT purls: - pkg:pypi/six?source=hash-mapping - run_exports: {} size: 18455 timestamp: 1753199211006 - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.3-pyhcf101f3_1.conda @@ -20509,7 +18308,6 @@ packages: license_family: BSD purls: - pkg:pypi/smmap?source=hash-mapping - run_exports: {} size: 27262 timestamp: 1781021238494 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -20521,7 +18319,6 @@ packages: license_family: Apache purls: - pkg:pypi/sniffio?source=hash-mapping - run_exports: {} size: 15698 timestamp: 1762941572482 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda @@ -20533,7 +18330,6 @@ packages: license_family: BSD purls: - pkg:pypi/snowballstemmer?source=hash-mapping - run_exports: {} size: 74456 timestamp: 1780468201547 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda @@ -20562,7 +18358,6 @@ packages: license_family: BSD purls: - pkg:pypi/sphinx?source=hash-mapping - run_exports: {} size: 1424416 timestamp: 1740956642838 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda @@ -20574,7 +18369,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 7240 timestamp: 1769194861913 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda @@ -20589,7 +18383,6 @@ packages: license_family: MIT purls: - pkg:pypi/sphinx-rtd-theme?source=hash-mapping - run_exports: {} size: 4626882 timestamp: 1769194859566 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda @@ -20602,7 +18395,6 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-applehelp?source=hash-mapping - run_exports: {} size: 29752 timestamp: 1733754216334 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -20615,7 +18407,6 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-devhelp?source=hash-mapping - run_exports: {} size: 24536 timestamp: 1733754232002 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -20628,7 +18419,6 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-htmlhelp?source=hash-mapping - run_exports: {} size: 32895 timestamp: 1733754385092 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda @@ -20640,7 +18430,6 @@ packages: license: 0BSD AND MIT purls: - pkg:pypi/sphinxcontrib-jquery?source=hash-mapping - run_exports: {} size: 112964 timestamp: 1734344603903 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda @@ -20652,7 +18441,6 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-jsmath?source=hash-mapping - run_exports: {} size: 10462 timestamp: 1733753857224 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda @@ -20665,22 +18453,20 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-qthelp?source=hash-mapping - run_exports: {} size: 26959 timestamp: 1733753505008 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda - sha256: 20b49741065fd7d3fabf98caf6d19b6436badb06b6d41f66b58f1fc2b52f37a1 - md5: f77df1fcf9af03b7287342638befca77 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + sha256: 64d89ecc0264347486971a94487cb8d7c65bfc0176750cf7502b8a272f4ab557 + md5: 3bc61f7161d28137797e038263c04c54 depends: - - python >=3.10 + - python >=3.9 - sphinx >=5 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/sphinxcontrib-serializinghtml?source=hash-mapping - run_exports: {} - size: 30640 - timestamp: 1781260357443 + size: 28669 + timestamp: 1733750596111 - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc @@ -20693,7 +18479,6 @@ packages: license_family: MIT purls: - pkg:pypi/stack-data?source=hash-mapping - run_exports: {} size: 26988 timestamp: 1733569565672 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda @@ -20706,9 +18491,6 @@ packages: license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - strong: - - __glibc >=2.28,<3.0.a0 size: 24008591 timestamp: 1765578833462 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda @@ -20721,9 +18503,6 @@ packages: license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL purls: [] - run_exports: - strong: - - __glibc >=2.28,<3.0.a0 size: 23644746 timestamp: 1765578629426 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda @@ -20736,7 +18515,6 @@ packages: license_family: MIT purls: - pkg:pypi/toml?source=hash-mapping - run_exports: {} size: 24017 timestamp: 1764486833072 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda @@ -20749,7 +18527,6 @@ packages: license_family: MIT purls: - pkg:pypi/tomli?source=hash-mapping - run_exports: {} size: 21561 timestamp: 1774492402955 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda @@ -20762,7 +18539,6 @@ packages: license_family: BSD purls: - pkg:pypi/traitlets?source=compressed-mapping - run_exports: {} size: 115158 timestamp: 1780507822178 - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda @@ -20775,7 +18551,6 @@ packages: license_family: BSD purls: - pkg:pypi/transforms3d?source=hash-mapping - run_exports: {} size: 2690384 timestamp: 1734511238605 - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda @@ -20792,7 +18567,6 @@ packages: license_family: MIT purls: - pkg:pypi/typeguard?source=hash-mapping - run_exports: {} size: 38297 timestamp: 1778779291237 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -20805,7 +18579,6 @@ packages: license_family: PSF purls: - pkg:pypi/typing-extensions?source=hash-mapping - run_exports: {} size: 51692 timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda @@ -20813,7 +18586,6 @@ packages: md5: ad659d0a2b3e47e38d829aa8cad2d610 license: LicenseRef-Public-Domain purls: [] - run_exports: {} size: 119135 timestamp: 1767016325805 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda @@ -20829,28 +18601,26 @@ packages: license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - run_exports: {} size: 103560 timestamp: 1778188657149 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - sha256: 0a7b0a2ada7ad719f9d4f8874eb10911e1fcfdecefc86456105eb806ebd60ac4 - md5: e449fb99b714be1e13fa5564dacd1af5 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.4.2-pyhcf101f3_0.conda + sha256: 83d10be1b436fef778e7982f24a1f117b7aa34817135ec8b0ad63ee4455943eb + md5: 52434c636a05a06806d0978128d98c19 depends: - python >=3.10 - distlib >=0.3.7,<1 - filelock <4,>=3.24.2 - importlib-metadata >=6.6 - platformdirs >=3.9.1,<5 - - python-discovery >=1.4.2 + - python-discovery >=1.4 - typing_extensions >=4.13.2 - python license: MIT license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - run_exports: {} - size: 3111990 - timestamp: 1781651033074 + size: 5151645 + timestamp: 1780253977667 - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda sha256: af400decd8578d521c752594bb9380eb4d1e1e53e919c18dd2d65429f032e36c md5: d93a6a7cf86ac0c6c2f00c287c3a030c @@ -20861,7 +18631,6 @@ packages: license_family: APACHE purls: - pkg:pypi/wadler-lindig?source=hash-mapping - run_exports: {} size: 28051 timestamp: 1752728420929 - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda @@ -20870,7 +18639,6 @@ packages: license: MIT license_family: MIT purls: [] - run_exports: {} size: 147954 timestamp: 1780946721169 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.1-pyhd8ed1ab_0.conda @@ -20882,7 +18650,6 @@ packages: license_family: MIT purls: - pkg:pypi/wcwidth?source=compressed-mapping - run_exports: {} size: 133769 timestamp: 1780932915297 - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda @@ -20896,7 +18663,6 @@ packages: license_family: BSD purls: - pkg:pypi/werkzeug?source=hash-mapping - run_exports: {} size: 258232 timestamp: 1775160081069 - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.7-pyhd8ed1ab_0.conda @@ -20910,7 +18676,6 @@ packages: license_family: BSD purls: - pkg:pypi/wslink?source=compressed-mapping - run_exports: {} size: 36803 timestamp: 1778826669944 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda @@ -20923,7 +18688,6 @@ packages: license_family: MIT purls: - pkg:pypi/zipp?source=compressed-mapping - run_exports: {} size: 24190 timestamp: 1779159948016 - conda: https://conda.anaconda.org/robostack-jazzy/linux-64/ros-jazzy-action-msgs-2.0.3-np2py312h2ed9cc7_16.conda @@ -37136,145 +34900,6 @@ packages: license: LicenseRef-openrail size: 244991335 timestamp: 1771976595791 -- conda_source: bitbots_rust_nav[bc6fbff1] @ src/bitbots_navigation/bitbots_rust_nav - variants: - c_stdlib: sysroot - c_stdlib_version: '2.28' - target_platform: linux-aarch64 - depends: - - python >=3.12 - - __glibc >=2.28,<3.0.a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.96.0-hb84128a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.2-h10b116e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.14.1-py310he8189be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.13-h91f4b29_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.24-haa595b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda -- conda_source: bitbots_rust_nav[befee43b] @ src/bitbots_navigation/bitbots_rust_nav - variants: - c_stdlib: sysroot - c_stdlib_version: '2.28' - target_platform: linux-64 - depends: - - python >=3.12 - - __glibc >=2.28,<3.0.a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.96.0-hd58cd63_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.2-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.14.1-py310h2b5ca13_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.24-h26efc2c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl name: trimesh version: 4.12.2 @@ -37518,20 +35143,6 @@ packages: requires_dist: - pytest>=8.0.0 requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - name: tqdm - version: 4.68.3 - sha256: 39832cc2def2789a6f29df83f172db7416cea70052c0907a57801c5f2fdccb03 - requires_dist: - - colorama ; sys_platform == 'win32' - - requests ; extra == 'discord' - - envwrap ; extra == 'discord' - - slack-sdk ; extra == 'slack' - - envwrap ; extra == 'slack' - - requests ; extra == 'telegram' - - envwrap ; extra == 'telegram' - - ipywidgets>=6 ; extra == 'notebook' - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl name: exhale version: 0.3.7 @@ -37543,3 +35154,23 @@ packages: - lxml - six requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl + name: tqdm + version: 4.68.2 + sha256: d4240441fb5353290b87d6a85968c9decc131a99b8c7faa28269d829de669ede + requires_dist: + - colorama ; sys_platform == 'win32' + - importlib-metadata ; python_full_version < '3.8' + - pytest>=6 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - pytest-timeout ; extra == 'dev' + - pytest-asyncio>=0.24 ; extra == 'dev' + - nbval ; extra == 'dev' + - requests ; extra == 'discord' + - envwrap ; extra == 'discord' + - slack-sdk ; extra == 'slack' + - envwrap ; extra == 'slack' + - requests ; extra == 'telegram' + - envwrap ; extra == 'telegram' + - ipywidgets>=6 ; extra == 'notebook' + requires_python: '>=3.7' diff --git a/pixi.toml b/pixi.toml index 6759028393..b8092d764f 100644 --- a/pixi.toml +++ b/pixi.toml @@ -39,6 +39,7 @@ cmd = "colcon test --parallel-workers 1 --event-handlers console_direct+ --retur [dependencies] # Base dependencies python = "==3.12.1, <3.13" +rust = ">=1.88" # Patches readline = ">=8.2.999" # This is needed because we want to install an empty readline package from our models channel that leads to the system version being used. Otherwise we might have a mismatch between bash (often accessed globally ignoring the env) and readline (provided by the env) breaking everything. @@ -46,6 +47,7 @@ readline = ">=8.2.999" # This is needed because we want to install an empty rea [feature.ros.dependencies] # Misc dependencies for our ROS 2 packages alsa-plugins = ">=1.2.12,<2" +clang = ">=21.1.0,<22" # Needed for r2r rust bindings generation beartype = ">=0.22.6,<0.23" breathe = ">=4.36.0,<5" cbor2 = ">=5.9.0,<6" @@ -175,9 +177,6 @@ bitbots_model_2023_04_04_philipp_yoeox_with_team_colors = ">=1.0.0,<2" bitbots_model_2022_10_07_flo_torso21_yoeox = ">=1.0.0,<2" tts-supertonic = ">=1.0.0,<2" -# Local packages -bitbots_rust_nav = { path = "src/bitbots_navigation/bitbots_rust_nav" } - # Patches pillow = "<12" # this constraint is needed as yoeo specifies the 11 major version and otherwise uv fails to solve given the constrains from the conda ecosystem. setuptools = "==68.1.2" # Pinning setuptools to avoid issues with colcon build @@ -205,6 +204,10 @@ ros-jazzy-robot-localization = ">=3.8.3,<4" # These are only needed on the robot +[activation.env] +CARGO_TARGET_DIR = "$PIXI_PROJECT_ROOT/build/cargo_target" + + [feature.ros.activation.env] #ROS_AUTOMATIC_DISCOVERY_RANGE = "LOCALHOST" RCUTILS_COLORIZED_OUTPUT = "1" diff --git a/src/bitbots_misc/bitbots_cargo/CMakeLists.txt b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt new file mode 100644 index 0000000000..1521d927d4 --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_cargo) + +find_package(ament_cmake REQUIRED) + +ament_package(CONFIG_EXTRAS cmake/bitbots_cargo.cmake.in) diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in new file mode 100644 index 0000000000..d70732a9d1 --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -0,0 +1,201 @@ + +# Need at least 3.21 for IMPORTED_TARGETS property that we rely on. +# NOTE! Ubuntu 20.04 comes 3.16.3 by default, so to use this you need +# to update cmake. This can be done by adding the kitware apt repo: +# https://apt.kitware.com +cmake_minimum_required(VERSION "3.21") + +# traverse dependencies for all message packages. +function(get_idl_deps OUT_PKG_DIRS PKG) + find_package(${PKG} REQUIRED) + target_link_libraries(dummy INTERFACE ${${PKG}_LIBRARIES}) + include_directories(dummy ${${PKG}_INCLUDE_DIRS}) + + list(APPEND VISITED_TARGETS ${PKG}) + + # only keep track of packages that include idl files + set(PKG_DIRS "") + if(DEFINED ${PKG}_IDL_FILES) + list(APPEND PKG_DIRS ${${PKG}_DIR}) + endif() + + foreach(LIB ${${PKG}_DEPENDENCIES}) + list(FIND VISITED_TARGETS ${LIB} VISITED) + if (${VISITED} EQUAL -1) + get_idl_deps(NEW_PKG_DIRS ${LIB}) + list(APPEND PKG_DIRS ${NEW_PKG_DIRS}) + list(REMOVE_DUPLICATES PKG_DIRS) + endif() + endforeach() + set(VISITED_TARGETS ${VISITED_TARGETS} PARENT_SCOPE) + set(${OUT_PKG_DIRS} ${PKG_DIRS} PARENT_SCOPE) +endfunction() + +function(r2r_cargo) + # pretend that we want to compile c code to get all library paths etc... + add_library(dummy INTERFACE) + + # traverse list of wanted packages to add dependencies + foreach(f ${ARGN}) + find_package(${f} REQUIRED) + set(REC_PKG_DIRS "") + get_idl_deps(REC_PKG_DIRS ${f}) + list(APPEND CMAKE_IDL_PACKAGES "${REC_PKG_DIRS}") + endforeach() + + list(REMOVE_DUPLICATES CMAKE_IDL_PACKAGES) + string (REPLACE ";" ":" CMAKE_IDL_PACKAGES_STR "${CMAKE_IDL_PACKAGES}") + set(ENV{CMAKE_IDL_PACKAGES} ${CMAKE_IDL_PACKAGES_STR}) + + # On OSX colcon eats the DYLD_LIBRARY_PATH... so we need to add the rpaths + # manually... + set(RUSTFLAGS "") + + # get imported libs + get_property(importTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS) + + foreach(p ${importTargets}) + get_property(_LIBLOC TARGET "${p}" PROPERTY LOCATION) + if(DEFINED _LIBLOC) + list(APPEND CMAKE_LIBRARIES "${_LIBLOC}") + get_filename_component(_PARENT "${_LIBLOC}" DIRECTORY) + if(IS_DIRECTORY ${_PARENT}) + list(APPEND RUSTFLAGS "-C link-arg=-Wl,-rpath,${_PARENT}") + endif() + endif() + endforeach() + + list(REMOVE_DUPLICATES RUSTFLAGS) + string (REPLACE ";" " " RUSTFLAGS_STR "${RUSTFLAGS}") + set(ENV{RUSTFLAGS} ${RUSTFLAGS_STR}) + + # get include paths + get_property(includeDirs DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY INCLUDE_DIRECTORIES) + list(REMOVE_DUPLICATES includeDirs) + string (REPLACE ";" ":" CMAKE_INCLUDE_DIRS_STR "${includeDirs}") + set(ENV{CMAKE_INCLUDE_DIRS} ${CMAKE_INCLUDE_DIRS_STR}) + + add_custom_target(cargo_target ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon" "--quiet" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "RUSTFLAGS=$ENV{RUSTFLAGS}" + "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" + "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" + cargo test --package ${PROJECT_NAME} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() + +endfunction() + +# Private helper: resolve the cargo workspace target directory. +function(_cargo_get_target_dir OUT_DIR) + execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE _METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(JSON _TARGET_DIR GET "${_METADATA_JSON}" target_directory) + set(${OUT_DIR} "${_TARGET_DIR}" PARENT_SCOPE) +endfunction() + +# Build a pyo3 Python extension and install it flat into site-packages so +# `import ` works after sourcing install/setup.bash. +# +# Usage: cargo_pyo3_extension([PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_pyo3_extension) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${PROJECT_NAME}) + endif() + + find_package(Python3 REQUIRED COMPONENTS Interpreter Development) + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + execute_process( + COMMAND ${Python3_EXECUTABLE} -c + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE _PYTHON_EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(_PYTHON_INSTALL_DIR + lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) + + add_custom_target(cargo_${_ARGS_PACKAGE} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo build --profile colcon --package ${_ARGS_PACKAGE} + --features pyo3/extension-module --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(CODE " + file(COPY + \"${_CARGO_TARGET_DIR}/colcon/lib${_ARGS_PACKAGE}.so\" + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/\") + file(RENAME + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/lib${_ARGS_PACKAGE}.so\" + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/${_ARGS_PACKAGE}${_PYTHON_EXT_SUFFIX}\") + ") + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo test --package ${_ARGS_PACKAGE} --features pyo3/extension-module + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() +endfunction() + +# Build a standalone Rust binary and install it to lib/${PROJECT_NAME}/ so +# it is launchable via `ros2 run ${PROJECT_NAME} `. +# +# Usage: cargo_binary( [PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_binary BINARY_NAME) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${BINARY_NAME}) + endif() + + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + if(WIN32) + set(_SUFFIX ".exe") + else() + set(_SUFFIX "") + endif() + + add_custom_target(cargo_${BINARY_NAME} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo build --profile colcon --package ${_ARGS_PACKAGE} --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(PROGRAMS ${_CARGO_TARGET_DIR}/colcon/${BINARY_NAME}${_SUFFIX} + DESTINATION lib/${PROJECT_NAME}) + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo test --package ${_ARGS_PACKAGE} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() +endfunction() diff --git a/src/bitbots_misc/bitbots_cargo/package.xml b/src/bitbots_misc/bitbots_cargo/package.xml new file mode 100644 index 0000000000..153d2a900e --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/package.xml @@ -0,0 +1,19 @@ + + + + bitbots_cargo + 1.0.0 + CMake helper for Rust based Bit-Bots packages. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + + + ament_cmake + + diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt index f7c77480fa..96f2ba49a9 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt @@ -1,48 +1,40 @@ cmake_minimum_required(VERSION 3.5) project(bitbots_extrinsic_calibration) -# Add support for C++17 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) +find_package(ament_cmake REQUIRED) +find_package(bitbots_cargo REQUIRED) + +# put ros package dependencies here. +r2r_cargo( + rcl # we need the c ros2 api + rcl_action # as of r2r 0.1.0, we also need the action api + rosgraph_msgs # for the Clock message + geometry_msgs + tf2_msgs) + +# install binaries +if(WIN32) + set(SUFFIX ".exe") +else() + set(SUFFIX "") endif() -# Build with release optimizations and debug symbols by default -if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebug) -endif() +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) -find_package(ament_cmake REQUIRED) -find_package(backward_ros REQUIRED) -find_package(bitbots_docs REQUIRED) -find_package(geometry_msgs REQUIRED) -find_package(rclcpp REQUIRED) -find_package(rot_conv REQUIRED) -find_package(std_msgs REQUIRED) -find_package(tf2 REQUIRED) -find_package(tf2_geometry_msgs REQUIRED) -find_package(tf2_ros REQUIRED) - -add_compile_options(-Wall -Werror -Wno-unused) - -add_executable(extrinsic_calibration src/extrinsic_calibration.cpp) - -ament_target_dependencies( - extrinsic_calibration - ament_cmake - bitbots_docs - rclcpp - std_msgs - tf2 - tf2_geometry_msgs - tf2_ros - rot_conv) - -enable_bitbots_docs() - -install(TARGETS extrinsic_calibration DESTINATION lib/${PROJECT_NAME}) +# Extract "target_directory" from JSON +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) -install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) +message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") + +install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} + DESTINATION lib/${PROJECT_NAME}) +install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +# we need this for ros/colcon ament_package() diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml new file mode 100644 index 0000000000..1f9b6111de --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +authors = ["Florian Vahl "] +edition = "2021" + +[dependencies] +r2r = "0.9" +futures = "0.3.15" +tokio = { version = "1", features = ["full"] } +glam = "0.30.9" diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch index ba6980f48f..979cc9b674 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch @@ -1,13 +1,13 @@ - + - + diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml index 07c8168262..98d3f9c6b0 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml @@ -14,12 +14,12 @@ ament_cmake - backward_ros - bitbots_docs - rot_conv - std_msgs - tf2_ros - tf2 + rcl + bitbots_cargo + geometry_msgs + rosgraph_msgs + + rcl diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp b/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp deleted file mode 100644 index a20f5ac356..0000000000 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include -using std::placeholders::_1; - -class ExtrinsicCalibrationBroadcaster : public rclcpp::Node { - public: - ExtrinsicCalibrationBroadcaster() : Node("bitbots_extrinsic_calibration") { - broadcaster_ = std::make_unique(this); - - this->declare_parameter("parent_frame", "camera_optical_frame_uncalibrated"); - this->declare_parameter("child_frame", "zed_left_camera_optical_frame"); - this->declare_parameter("offset_x", 0.0); - this->declare_parameter("offset_y", 0.0); - this->declare_parameter("offset_z", 0.0); - - auto parameters = this->get_parameters(this->list_parameters({}, 10).names); - onSetParameters(parameters); - - param_callback_handle_ = - this->add_on_set_parameters_callback(std::bind(&ExtrinsicCalibrationBroadcaster::onSetParameters, this, _1)); - } - - rcl_interfaces::msg::SetParametersResult onSetParameters(const std::vector& parameters) { - for (const auto& parameter : parameters) { - if (parameter.get_name() == "offset_x") { - offset_x_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_y") { - offset_y_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_z") { - offset_z_ = parameter.as_double(); - } else if (parameter.get_name() == "parent_frame") { - parent_frame_ = parameter.as_string(); - } else if (parameter.get_name() == "child_frame") { - child_frame_ = parameter.as_string(); - } else { - RCLCPP_DEBUG(this->get_logger(), "Unknown parameter: %s", parameter.get_name().c_str()); - } - } - auto offset_quat = rot_conv::QuatFromEuler(offset_z_, offset_y_, offset_x_); - - transform_.rotation.x = offset_quat.x(); - transform_.rotation.y = offset_quat.y(); - transform_.rotation.z = offset_quat.z(); - transform_.rotation.w = offset_quat.w(); - - geometry_msgs::msg::TransformStamped tf; - tf.header.stamp = this->now(); - tf.header.frame_id = parent_frame_; - tf.child_frame_id = child_frame_; - tf.transform = transform_; - broadcaster_->sendTransform(tf); - - rcl_interfaces::msg::SetParametersResult result; - result.successful = true; - - return result; - } - - private: - OnSetParametersCallbackHandle::SharedPtr param_callback_handle_; - std::unique_ptr broadcaster_; - geometry_msgs::msg::Transform transform_{geometry_msgs::msg::Transform()}; - std::string parent_frame_, child_frame_; - double offset_x_ = 0, offset_y_ = 0, offset_z_ = 0; -}; - -int main(int argc, char** argv) { - rclcpp::init(argc, argv); - - auto node = std::make_shared(); - - rclcpp::experimental::executors::EventsExecutor exec; - exec.add_node(node); - exec.spin(); - rclcpp::shutdown(); -} diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs new file mode 100644 index 0000000000..cec6d7612a --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -0,0 +1,95 @@ +use futures::StreamExt; +use glam::{EulerRot, Quat}; +use r2r::{ + geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, + std_msgs::msg::Header, + tf2_msgs::msg::TFMessage, + Clock, RosParams, +}; +use std::sync::{Arc, Mutex as StdMutex}; + +#[derive(RosParams, Debug, Default, Clone)] +struct CalibrationParams { + /// Parent frame for the calibration transform + parent_frame: String, + /// Child frame for the calibration transform + child_frame: String, + /// Roll offset in radians + offset_x: f32, + /// Pitch offset in radians + offset_y: f32, + /// Yaw offset in radians + offset_z: f32, +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let ctx = r2r::Context::create()?; + let mut node = r2r::Node::create(ctx, "bitbots_extrinsic_calibration", "")?; + let nl = node.logger().to_string(); + + // Initialize parameter handling + let params = Arc::new(StdMutex::new(CalibrationParams::default())); + let (parameter_handler, mut parameter_events) = + node.make_derived_parameter_handler(params.clone())?; + tokio::task::spawn(parameter_handler); + + let tf_static_broadcaster = + node.create_publisher("/tf_static", r2r::QosProfile::default().transient_local())?; + let ros_clock = node.get_ros_clock(); + + tokio::task::spawn(async move { + loop { + { + let params = params.lock().unwrap(); + + tf_static_broadcaster + .publish(&TFMessage { + transforms: vec![TransformStamped { + header: Header { + frame_id: params.parent_frame.clone(), + stamp: Clock::to_builtin_time( + &ros_clock.lock().unwrap().get_now().unwrap(), + ), + }, + child_frame_id: params.child_frame.clone(), + transform: Transform { + translation: Vector3::default(), + rotation: { + let quat = Quat::from_euler( + EulerRot::ZYX, + params.offset_z, + params.offset_y, + params.offset_x, + ); + Quaternion { + x: quat.x as f64, + y: quat.y as f64, + z: quat.z as f64, + w: quat.w as f64, + } + }, + }, + }], + }) + .expect("Failed to publish updated transform"); + } + // Wait for next parameter update + parameter_events.next().await; + r2r::log_info!(&nl, "Extrinsic parameter update"); + } + }); + + // Spin the node + tokio::task::spawn(async move { + loop { + node.spin_once(std::time::Duration::from_millis(100)); + tokio::task::yield_now().await; // Let the other tasks run too + } + }); + + // Await shutdown signal + tokio::signal::ctrl_c().await?; + + Ok(()) +} diff --git a/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt new file mode 100644 index 0000000000..bae93fdc9b --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_global_planner) + +find_package(ament_cmake REQUIRED) +find_package(bitbots_cargo REQUIRED) + +cargo_pyo3_extension() + +ament_package() diff --git a/src/bitbots_navigation/bitbots_global_planner/Cargo.toml b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml new file mode 100644 index 0000000000..193e1434dc --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "bitbots_global_planner" +version = "0.1.2" +edition = "2021" + +[lib] +name = "bitbots_global_planner" +crate-type = ["cdylib", "rlib"] + +[[bin]] +name = "interactive_nav_demo" +path = "src/bin.rs" + +[features] +gui = ["dep:eframe"] + +[dependencies] +eframe = {version="0.31.0", optional = true} +geo = "0.29.3" +keyed_priority_queue = "0.4.2" +ordered-float = "4.5.0" +pyo3 = "0.29.0" +rand = "0.9.3" \ No newline at end of file diff --git a/src/bitbots_navigation/bitbots_global_planner/README.md b/src/bitbots_navigation/bitbots_global_planner/README.md new file mode 100644 index 0000000000..60b77b455f --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/README.md @@ -0,0 +1,25 @@ +# bitbots_global_planner + +A best-effort A*-on-visibility-graph implementation for path planning in obstacles maps where obstacles and the robot itself are assumed to be round. + +## Installation + +```bash +pip install . +``` + +## API + +It exports three classes + +### `RoundObstacle` + +Represents a round obstacle with public fields `center: (float, float)` and `radius: float`. Can be created with the constructor `RoundObstacle(center, radius)` + +### `ObstacleMapConfig` + +Represents all configuration values for how obstacles should be treated with public fields `dilate: float` - the value by which the radii of the obstacles should be dilated (this should be set to approximately your own radius) - and `num_vertices` - the number of vertices the polygons approximating the round obstacles should have. Can be created with the constructor `ObstacleMapConfig(dilate, num_vertices)` + +### `ObstacleMap` + +Represents a set of obstacles on a plane with a given config. This has two fields: `config: ObstacleMapConfig` and `obstacles: [RoundObstacle]`. Can be created with the constructor `ObstacleMap(config, obstacles)` diff --git a/src/bitbots_navigation/bitbots_global_planner/package.xml b/src/bitbots_navigation/bitbots_global_planner/package.xml new file mode 100644 index 0000000000..ad5d5884b0 --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/package.xml @@ -0,0 +1,20 @@ + + + + bitbots_global_planner + 0.1.2 + Rust-based navigation primitives (obstacle map, visibility graph) exposed as a Python extension. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + bitbots_cargo + + + ament_cmake + + diff --git a/src/bitbots_navigation/bitbots_global_planner/src/bin.rs b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs new file mode 100644 index 0000000000..fbaa9fbf79 --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs @@ -0,0 +1,165 @@ +#[cfg(feature = "gui")] +mod gui { + use bitbots_global_planner::map::{ObstacleMap, ObstacleMapConfig}; + use bitbots_global_planner::obstacle::RoundObstacle; + use eframe::egui; + + pub struct PathfindingApp { + config: ObstacleMapConfig, + obstacles: Vec, + start: Option<(f64, f64)>, + goal: Option<(f64, f64)>, + path: Vec<(f64, f64)>, + dragging: Option, + } + + impl Default for PathfindingApp { + fn default() -> Self { + let config = ObstacleMapConfig { + robot_radius: 0.3, + margin: 0.25, + num_vertices: 12, + }; + let obstacles = vec![ + RoundObstacle { + center: (1.0, 4.0), + radius: 0.13 / 2.0, + }, + RoundObstacle { + center: (4.2, 4.2), + radius: 1.3, + }, + RoundObstacle { + center: (5.0, 2.0), + radius: 0.5 / 2.0, + }, + RoundObstacle { + center: (10.0, 10.0), + radius: 0.5 / 2.0, + }, + ]; + Self { + config, + obstacles, + start: None, + goal: None, + path: Vec::new(), + dragging: None, + } + } + } + + impl eframe::App for PathfindingApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + let (response, painter) = ui + .allocate_painter(egui::Vec2::new(500.0, 500.0), egui::Sense::click_and_drag()); + let rect = response.rect; + let to_screen = + |(x, y): (f64, f64)| rect.min + egui::vec2(x as f32 * 40.0, y as f32 * 40.0); + + if let Some(pos) = response.interact_pointer_pos() { + let world_pos = ( + ((pos.x - rect.min.x) / 40.0) as f64, + ((pos.y - rect.min.y) / 40.0) as f64, + ); + if response.clicked_by(egui::PointerButton::Primary) { + self.start = Some(world_pos); + } else if response.clicked_by(egui::PointerButton::Secondary) { + self.goal = Some(world_pos); + } + } + + if ctx.input(|i| i.modifiers.shift) { + if response.drag_started() { + if let Some(pos) = response.interact_pointer_pos() { + self.dragging = self.obstacles.iter().position(|o| { + let screen_pos = to_screen(o.center); + screen_pos.distance(pos) + < (o.radius + self.config.robot_radius + self.config.margin) + as f32 + * 40.0 + }); + } + } + + if let Some(idx) = self.dragging { + if let Some(pos) = response.interact_pointer_pos() { + self.obstacles[idx].center = ( + ((pos.x - rect.min.x) / 40.0) as f64, + ((pos.y - rect.min.y) / 40.0) as f64, + ); + } + } + if response.drag_stopped() { + self.dragging = None; + } + } + + for obstacle in &self.obstacles { + let pos = to_screen(obstacle.center); + let obstacle_layers = vec![ + ( + obstacle.radius + self.config.robot_radius + self.config.margin, + egui::Color32::YELLOW, + ), + ( + obstacle.radius + self.config.robot_radius, + egui::Color32::RED, + ), + (obstacle.radius, egui::Color32::BLACK), + ]; + for (radius, color) in obstacle_layers { + painter.circle_filled(pos, (radius as f32) * 40.0, color); + } + } + + if let (Some(start), Some(goal)) = (self.start, self.goal) { + let omap = ObstacleMap::new(self.config, self.obstacles.clone()); + let time1 = std::time::Instant::now(); + self.path = omap.shortest_path(start, goal); + let time2 = std::time::Instant::now(); + println!("Pathfinding took: {:?}", time2 - time1); + for window in self.path.windows(2) { + if let [a, b] = window { + painter.line_segment( + [to_screen(*a), to_screen(*b)], + (2.0, egui::Color32::BLUE), + ); + } + } + } + }); + } + } + + pub fn run_gui() -> Result<(), eframe::Error> { + println!("Usage instructions:"); + println!(" - Left click to set the start position"); + println!(" - Right click to set the goal position"); + println!(" - Hold Shift to drag obstacles"); + println!(" - Have fun & Find bugs!"); + + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default() + .with_inner_size([500.0, 500.0]) + .with_resizable(false), + ..Default::default() + }; + eframe::run_native( + "Interactive Pathfinding", + options, + Box::new(|_| Ok(Box::new(PathfindingApp::default()))), + ) + } +} + +#[cfg(feature = "gui")] +fn main() -> Result<(), eframe::Error> { + gui::run_gui() +} + +#[cfg(not(feature = "gui"))] +fn main() { + println!("GUI feature is disabled. Run with --features gui to enable."); +} diff --git a/src/bitbots_navigation/bitbots_global_planner/src/lib.rs b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs new file mode 100644 index 0000000000..994d666508 --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs @@ -0,0 +1,17 @@ +use map::{ObstacleMap, ObstacleMapConfig}; +use obstacle::{PolygonObstacle, RoundObstacle}; +use pyo3::prelude::*; + +pub mod map; +pub mod obstacle; +pub mod planner; + +#[pymodule] +fn bitbots_global_planner(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + // Further classes and functions can be added here + Ok(()) +} diff --git a/src/bitbots_navigation/bitbots_global_planner/src/map.rs b/src/bitbots_navigation/bitbots_global_planner/src/map.rs new file mode 100644 index 0000000000..bfd3772c6c --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/src/map.rs @@ -0,0 +1,84 @@ +use geo::{BooleanOps, Coord, LineString, MultiPolygon, Polygon}; +use pyo3::prelude::*; + +use crate::{ + obstacle::{AnyObstacle, Obstacle}, + planner::PathPlanner, +}; + +/// Configuration values for the ObstacleMap, these should be given by ROS parameters +#[pyclass( + eq, + str = "ObstacleMapConfig(robot_radius={robot_radius:?}, margin={margin:?}, num_vertices={num_vertices:?})" +)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct ObstacleMapConfig { + /// All obstacles are inflated by this amount, so we can assume the robot itself is a point + #[pyo3(set, get)] + pub robot_radius: f64, + /// Normal plans should not be directly on the edge of an obstacle, + /// this margin is added if possible + #[pyo3(set, get)] + pub margin: f64, + /// The number of vertices that the polygon representing an obstacle has + #[pyo3(set, get)] + pub num_vertices: usize, +} + +#[pymethods] +impl ObstacleMapConfig { + #[new] + /// Create a new config with the given values + pub fn new(robot_radius: f64, margin: f64, num_vertices: usize) -> Self { + Self { + robot_radius, + margin, + num_vertices, + } + } +} + +#[pyclass(eq, str = "ObstacleMap(obstacles={obstacles:?})")] +#[derive(Debug, Clone, PartialEq)] +pub struct ObstacleMap { + #[pyo3(get, set)] + config: ObstacleMapConfig, + #[pyo3(get, set)] + obstacles: Vec, +} + +#[pymethods] +impl ObstacleMap { + #[new] + pub fn new(config: ObstacleMapConfig, obstacles: Vec) -> Self { + Self { config, obstacles } + } + + pub fn shortest_path(&self, start: (f64, f64), goal: (f64, f64)) -> Vec<(f64, f64)> { + PathPlanner::new(self, start, goal).shortest_path() + } +} + +impl ObstacleMap { + pub fn as_vertices(&self) -> Vec { + self.obstacles + .iter() + .flat_map(|obstacle| obstacle.as_vertices(&self.config)) + .collect() + } + + fn as_polygons(&self, margin: bool) -> Vec { + self.obstacles + .iter() + .map(|obstacle| obstacle.as_polygon(&self.config, margin)) + .collect() + } + + pub fn as_multipolygon(&self, margin: bool) -> MultiPolygon { + let polygons = self.as_polygons(margin); + polygons.iter().fold( + MultiPolygon::new(vec![Polygon::new(LineString::new(vec![]), vec![])]), + |a, b| a.union(b), + ) + } +} diff --git a/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs new file mode 100644 index 0000000000..88e8d70aed --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs @@ -0,0 +1,201 @@ +use pyo3::prelude::*; + +use geo::{BooleanOps, Coord, LineString, MultiPolygon, Polygon}; + +use crate::map::ObstacleMapConfig; + +pub trait Obstacle { + /// Return the vertices of this obstacle inflated by the robot size and margin for the visibility graph generation + fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec; + + /// Return the polygon representation of this obstacle inflated by the robot size and optionally the margin for intersection checking + fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon; +} + +/// A helper function to generate a num_vertices-sided polygon approximating a circle +fn regular_ngon(center: Coord, num_vertices: usize, radius: f64) -> Vec { + (0..num_vertices) + .map(|side| { + let angle = (side as f64) / (num_vertices as f64) * std::f64::consts::TAU; + center + Coord::from((radius * angle.cos(), radius * angle.sin())) + }) + .collect() +} + +/// A round obstacle +#[pyclass(eq, str = "RoundObstacle(center={center:?} radius={radius:?})")] +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct RoundObstacle { + /// The center of the obstacle + #[pyo3(get, set)] + pub center: (f64, f64), + /// The radius of the obstacle + #[pyo3(get, set)] + pub radius: f64, +} + +#[pymethods] +impl RoundObstacle { + #[new] + pub fn new(center: (f64, f64), radius: f64) -> Self { + Self { center, radius } + } +} + +/// Value subtracted from the radius of obstacles for intersection checking +pub const EPSILON: f64 = 0.01; + +impl Obstacle for RoundObstacle { + fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { + regular_ngon( + self.center.into(), + config.num_vertices, + self.radius + config.robot_radius + config.margin, + ) + } + + fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { + let inflation = if margin { + config.robot_radius + config.margin + } else { + config.robot_radius + }; + let vertices = regular_ngon( + self.center.into(), + config.num_vertices, + self.radius + inflation - EPSILON, + ); + Polygon::new(LineString::new(vertices), vec![]) + } +} + +/// An obstacle with an arbitrary (also concave) polygon shape +#[pyclass(eq, str = "PolygonObstacle(vertices={vertices:?})")] +#[derive(Debug, Clone, PartialEq)] +pub struct PolygonObstacle { + /// The vertices of the polygon outline (without a closing duplicate of the first vertex) + #[pyo3(get, set)] + pub vertices: Vec<(f64, f64)>, +} + +#[pymethods] +impl PolygonObstacle { + #[new] + pub fn new(vertices: Vec<(f64, f64)>) -> Self { + Self { vertices } + } +} + +impl PolygonObstacle { + /// Inflate the polygon by the given offset (Minkowski sum with a num_vertices-sided + /// approximation of a circle). This is done by unioning the polygon with a rectangle + /// for each edge and an ngon for each vertex. + fn buffered(&self, num_vertices: usize, offset: f64) -> Polygon { + let coords: Vec = self.vertices.iter().copied().map(Coord::from).collect(); + let base = Polygon::new(LineString::new(coords.clone()), vec![]); + if offset <= 0.0 { + return base; + } + let mut result = MultiPolygon::new(vec![base.clone()]); + for i in 0..coords.len() { + let a = coords[i]; + let b = coords[(i + 1) % coords.len()]; + let edge = b - a; + let length = edge.x.hypot(edge.y); + if length > 0.0 { + // Rectangle covering the edge inflated perpendicular to it + let normal = Coord::from((-edge.y / length * offset, edge.x / length * offset)); + let rectangle = Polygon::new( + LineString::new(vec![a + normal, b + normal, b - normal, a - normal]), + vec![], + ); + result = result.union(&rectangle); + } + // Regular ngon rounding the corner at each vertex + let corner = Polygon::new(LineString::new(regular_ngon(a, num_vertices, offset)), vec![]); + result = result.union(&corner); + } + // All parts overlap the base polygon, so the union is a single polygon + result.0.into_iter().next().unwrap_or(base) + } +} + +impl Obstacle for PolygonObstacle { + fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { + let polygon = self.buffered(config.num_vertices, config.robot_radius + config.margin); + let exterior = polygon.exterior(); + // Skip the closing duplicate of the first vertex + exterior.0[..exterior.0.len().saturating_sub(1)].to_vec() + } + + fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { + let inflation = if margin { + config.robot_radius + config.margin + } else { + config.robot_radius + }; + self.buffered(config.num_vertices, inflation - EPSILON) + } +} + +/// Any of the supported obstacle shapes, so they can be mixed in the same ObstacleMap +#[derive(Debug, Clone, PartialEq, FromPyObject, IntoPyObject)] +pub enum AnyObstacle { + Round(RoundObstacle), + Polygon(PolygonObstacle), +} + +impl Obstacle for AnyObstacle { + fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { + match self { + AnyObstacle::Round(obstacle) => obstacle.as_vertices(config), + AnyObstacle::Polygon(obstacle) => obstacle.as_vertices(config), + } + } + + fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { + match self { + AnyObstacle::Round(obstacle) => obstacle.as_polygon(config, margin), + AnyObstacle::Polygon(obstacle) => obstacle.as_polygon(config, margin), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::map::{ObstacleMap, ObstacleMapConfig}; + use geo::Contains; + + fn config() -> ObstacleMapConfig { + ObstacleMapConfig { + robot_radius: 0.3, + margin: 0.1, + num_vertices: 12, + } + } + + #[test] + fn polygon_obstacle_is_inflated() { + let obstacle = + PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); + // The polygon inflated by the robot radius contains points outside of the original polygon + let critical = obstacle.as_polygon(&config(), false); + assert!(critical.contains(&Coord::from((-0.25, 0.5)))); + assert!(!critical.contains(&Coord::from((-0.35, 0.5)))); + // The polygon inflated by the robot radius and margin is even larger + let with_margin = obstacle.as_polygon(&config(), true); + assert!(with_margin.contains(&Coord::from((-0.35, 0.5)))); + } + + #[test] + fn path_avoids_polygon_obstacle() { + // A wall between the start and the goal + let wall = PolygonObstacle::new(vec![(2.0, -2.0), (2.2, -2.0), (2.2, 2.0), (2.0, 2.0)]); + let map = ObstacleMap::new(config(), vec![AnyObstacle::Polygon(wall)]); + let path = map.shortest_path((0.0, 0.0), (4.0, 0.0)); + // The path needs to route around one of the wall ends instead of going straight + assert!(path.len() > 2); + assert!(path.iter().any(|(_, y)| y.abs() > 2.0)); + } +} diff --git a/src/bitbots_navigation/bitbots_global_planner/src/planner.rs b/src/bitbots_navigation/bitbots_global_planner/src/planner.rs new file mode 100644 index 0000000000..fa9027bb53 --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/src/planner.rs @@ -0,0 +1,167 @@ +use std::{ + cmp::Reverse, + collections::{HashMap, HashSet}, +}; + +use geo::{Contains, Coord, Distance, Euclidean, Intersects, Line, MultiPolygon}; +use keyed_priority_queue::{Entry, KeyedPriorityQueue}; +use ordered_float::OrderedFloat; + +use crate::map::ObstacleMap; + +#[derive(Debug, Clone)] +pub struct PathPlanner { + vertices: Vec, + obstacle_critical: MultiPolygon, + obstacle_with_margin: MultiPolygon, + start: usize, + goal: usize, + open: KeyedPriorityQueue>>, + g_score: HashMap>, + successors: HashSet, + from: HashMap, +} + +const MULTIPLIER: f64 = 10.0; + +impl PathPlanner { + /// Create a new path planner planning task with the given map, start and goal + pub fn new(map: &ObstacleMap, start: (f64, f64), goal: (f64, f64)) -> Self { + let mut vertices = map.as_vertices(); + vertices.append(&mut vec![start.into(), goal.into()]); + let start: usize = vertices.len() - 2; + let goal = vertices.len() - 1; + let obstacle_critical = map.as_multipolygon(false); + let obstacle_with_margin = map.as_multipolygon(true); + let mut open = KeyedPriorityQueue::>>::new(); + open.push( + start, + Reverse(OrderedFloat(Euclidean::distance( + vertices[start], + vertices[goal], + ))), + ); + let from = HashMap::::new(); + let successors = HashSet::::from_iter(0..vertices.len()); + let mut g_score = HashMap::>::new(); + g_score.insert(start, OrderedFloat(0.0)); + Self { + vertices, + obstacle_critical, + obstacle_with_margin, + start, + goal, + open, + g_score, + successors, + from, + } + } + + /// Part of A* algorithm, calculates the heuristic for the given node. + /// Often the heuristic is the euclidean distance to the goal. + fn heuristic(&self, node: usize) -> OrderedFloat { + self.distance(node, self.goal) + } + + /// Calculates the euclidean distance between two vertices + fn distance(&self, from: usize, to: usize) -> OrderedFloat { + OrderedFloat(Euclidean::distance(self.vertices[from], self.vertices[to])) + } + + /// Part of A* algorithm, reconstructs the path from the start to the goal vertex + /// based on the predecessors calculated during the search + fn reconstruct_path(&self, vertex: usize) -> Vec<(f64, f64)> { + let mut path = vec![vertex]; + let mut current = vertex; + while let Some(previous) = self.from.get(¤t) { + current = *previous; + path.push(*previous); + } + path.reverse(); + path.into_iter() + .map(|idx| self.vertices[idx].x_y()) + .collect() + } + + // Calculates and rates the connections of the vertex + fn expand_node(&mut self, vertex: usize) { + let g_vertex = *self + .g_score + .get(&vertex) + .unwrap_or(&OrderedFloat(f64::INFINITY)); + for successor in self.successors.iter().cloned() { + let connection = Line::new(self.vertices[vertex], self.vertices[successor]); + // Check if the connection intersects with anything + let multiplier = if self.obstacle_with_margin.intersects(&connection) { + // Check if we are at the start or goal + // We want to always allow connections to the start and goal, + // but we want to penalize connections that intersect with an obstacles critical area + // So we don't want to connect the visibility graph through an obstacle except for the start and goal + if (self.start == vertex && self.goal == successor) // Best effort backup solution, so we allow the direct connection at high cost + // Also consider start and goal as inside the obstacle (at high cost if we are inside the critical area, and at low cost if we are inside the margin) + || (self.goal == successor && self.obstacle_with_margin.contains(&connection.end_point())) + || (self.start == vertex && self.obstacle_with_margin.contains(&connection.start_point()) + ) { + // Use high cost for connections that intersect with the critical area of an obstacle + if self.obstacle_critical.intersects(&connection) { + OrderedFloat(MULTIPLIER) + } else { + // When we are at the start or goal and the connection is inside the obstacle margin, + // but not critical we want to allow this connection without penalty. + // This way we avoid situations where the robot gets stuck. + // Image a situation where the robot follows the normal path around an obstacle. + // Due to the nature of things it's start point is not exactly on the edge. + // We therefore are inside the obstacle and get a high cost roughly 50 percent of the time. + // This leads to us going back to the vertex we came from + // (it has the shortest path though the high cost region) and trying again. + // Immediately after departing from the vertex we are inside the obstacle again (~50 percent of the time). + // This can lead to the robot getting stuck in a loop. + // We therefore add a margin around the obstacle where we don't penalize start and end connections, + // while prohibiting normal connections of the visibility graph (to avoid getting too close to the obstacle again). + OrderedFloat(1.0) + } + } else { + // Ignore connections that intersect with obstacles + // (except for the start and goal as they might be inside the obstacle and we do a best effort solution) + continue; + } + } else { + // Don't penalize connections that don't intersect with anything + OrderedFloat(1.0) + }; + + // Part of A* algorithm + let g_successor = *self + .g_score + .get(&successor) + .unwrap_or(&OrderedFloat(f64::INFINITY)); + let g_tentative = g_vertex + multiplier * self.distance(vertex, successor); + if g_tentative < g_successor { + self.from.insert(successor, vertex); + self.g_score.insert(successor, g_tentative); + let new_f_score = Reverse(g_tentative + self.heuristic(successor)); + match self.open.entry(successor) { + Entry::Occupied(entry) => { + entry.set_priority(new_f_score); + } + Entry::Vacant(entry) => { + entry.set_priority(new_f_score); + } + } + } + } + } + + /// Find the shortest path from the start to the goal considering the obstacles + pub fn shortest_path(mut self) -> Vec<(f64, f64)> { + while let Some((vertex, _)) = self.open.pop() { + if vertex == self.goal { + return self.reconstruct_path(vertex); + } + self.successors.remove(&vertex); + self.expand_node(vertex); + } + unreachable!() + } +} diff --git a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py index a7950b714e..c8c128269b 100644 --- a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py +++ b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py @@ -3,7 +3,7 @@ import soccer_vision_3d_msgs.msg as sv3dm import tf2_ros as tf2 -from bitbots_rust_nav import ObstacleMap, ObstacleMapConfig, PolygonObstacle, RoundObstacle +from bitbots_global_planner import ObstacleMap, ObstacleMapConfig, PolygonObstacle, RoundObstacle from bitbots_utils.utils import get_parameters_from_other_node from geometry_msgs.msg import PoseStamped from nav_msgs.msg import Path diff --git a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml b/src/bitbots_navigation/bitbots_rust_nav/pixi.toml deleted file mode 100644 index 52021ce2a4..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "bitbots_rust_nav" -version = "0.2.0" - -[package.build] -backend = { name = "pixi-build-python", version = ">=0.4.0" } - -[package.host-dependencies] -rust = ">=1.91.1,<1.92" -maturin = ">=1.10.2,<2" -python = ">=3.12.1, <3.13" diff --git a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml b/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml deleted file mode 100644 index 933ab2aa6f..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[build-system] -requires = ["maturin>=1.7,<2.0"] -build-backend = "maturin" - -[project] -name = "bitbots_rust_nav" -requires-python = ">=3.12" -classifiers = [ - "Programming Language :: Rust", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] -dynamic = ["version"] - -[tool.maturin] -features = ["pyo3/extension-module"] From 60c4946129602e25107da61d6dcb5603d3c4c919 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 02:55:32 +0200 Subject: [PATCH 34/48] Fix pyo3 0.29 deprecation warnings: opt in to FromPyObject on pyclass types --- src/bitbots_navigation/bitbots_global_planner/src/map.rs | 3 ++- src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bitbots_navigation/bitbots_global_planner/src/map.rs b/src/bitbots_navigation/bitbots_global_planner/src/map.rs index bfd3772c6c..900284d83b 100644 --- a/src/bitbots_navigation/bitbots_global_planner/src/map.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/map.rs @@ -9,6 +9,7 @@ use crate::{ /// Configuration values for the ObstacleMap, these should be given by ROS parameters #[pyclass( eq, + from_py_object, str = "ObstacleMapConfig(robot_radius={robot_radius:?}, margin={margin:?}, num_vertices={num_vertices:?})" )] #[derive(Debug, Copy, Clone, PartialEq)] @@ -38,7 +39,7 @@ impl ObstacleMapConfig { } } -#[pyclass(eq, str = "ObstacleMap(obstacles={obstacles:?})")] +#[pyclass(eq, from_py_object, str = "ObstacleMap(obstacles={obstacles:?})")] #[derive(Debug, Clone, PartialEq)] pub struct ObstacleMap { #[pyo3(get, set)] diff --git a/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs index 88e8d70aed..778e115e4c 100644 --- a/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs @@ -23,7 +23,7 @@ fn regular_ngon(center: Coord, num_vertices: usize, radius: f64) -> Vec { } /// A round obstacle -#[pyclass(eq, str = "RoundObstacle(center={center:?} radius={radius:?})")] +#[pyclass(eq, from_py_object, str = "RoundObstacle(center={center:?} radius={radius:?})")] #[derive(Debug, Clone, Copy, PartialEq)] pub struct RoundObstacle { /// The center of the obstacle @@ -70,7 +70,7 @@ impl Obstacle for RoundObstacle { } /// An obstacle with an arbitrary (also concave) polygon shape -#[pyclass(eq, str = "PolygonObstacle(vertices={vertices:?})")] +#[pyclass(eq, from_py_object, str = "PolygonObstacle(vertices={vertices:?})")] #[derive(Debug, Clone, PartialEq)] pub struct PolygonObstacle { /// The vertices of the polygon outline (without a closing duplicate of the first vertex) From f58fd07ca2d34a8c3d82c206d4fae137d685cafd Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 03:00:35 +0200 Subject: [PATCH 35/48] Add Cargo.lock for workspace --- Cargo.lock | 4924 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4924 insertions(+) create mode 100644 Cargo.lock diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000000..2eb162cc84 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4924 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" + +[[package]] +name = "accesskit_atspi_common" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit", + "hashbrown 0.15.5", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "paste", + "static_assertions", + "windows", + "windows-core", +] + +[[package]] +name = "accesskit_winit" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-activity" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" +dependencies = [ + "android-properties", + "bitflags 2.13.0", + "cc", + "jni", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 2.0.18", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "image", + "log", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.4", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.4", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-signal" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.1.4", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" +dependencies = [ + "atspi-common", + "serde", + "zbus", + "zvariant", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.13.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.2", + "shlex 1.3.0", + "syn", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +dependencies = [ + "futures", + "glam", + "r2r", + "tokio", +] + +[[package]] +name = "bitbots_global_planner" +version = "0.1.2" +dependencies = [ + "eframe", + "geo", + "keyed_priority_queue", + "ordered-float", + "pyo3", + "rand 0.9.4", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.13.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +dependencies = [ + "bitflags 2.13.0", + "polling", + "rustix 1.1.4", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.4", + "rustix 1.1.4", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex 2.0.1", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.13.0", + "objc2 0.6.4", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "earcutr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" +dependencies = [ + "itertools 0.11.0", + "num-traits", +] + +[[package]] +name = "ecolor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" +dependencies = [ + "bytemuck", + "emath", +] + +[[package]] +name = "eframe" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.59.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" +dependencies = [ + "accesskit", + "ahash", + "bitflags 2.13.0", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", +] + +[[package]] +name = "egui-wgpu" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" +dependencies = [ + "accesskit_winit", + "ahash", + "arboard", + "bytemuck", + "egui", + "log", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "either" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" + +[[package]] +name = "emath" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "epaint" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fax" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float_next_after" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "force-send-sync" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5682bd193aa441fe571a005561e0c0ada74f89ec2dc390483a6ff17c0665b9" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "geo" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f0e6e028c581e82e6822a68869514e94c25e7f8ea669a2d8595bdf7461ccc5" +dependencies = [ + "earcutr", + "float_next_after", + "geo-types", + "geographiclib-rs", + "i_overlay", + "log", + "num-traits", + "robust", + "rstar", + "spade", +] + +[[package]] +name = "geo-types" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5" +dependencies = [ + "approx", + "num-traits", + "rayon", + "rstar", + "serde", +] + +[[package]] +name = "geographiclib-rs" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" +dependencies = [ + "libm", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.4", + "windows-link", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.30.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.13.0", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.13.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.13.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "i_float" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775f9961a8d2f879725da8aff789bb20a3ddf297473e0c90af75e69313919490" +dependencies = [ + "serde", +] + +[[package]] +name = "i_key_sort" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" + +[[package]] +name = "i_overlay" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01882ce5ed786bf6e8f5167f171a4026cd129ce17d9ff5cbf1e6749b98628ece" +dependencies = [ + "i_float", + "i_key_sort", + "i_shape", + "i_tree", + "rayon", +] + +[[package]] +name = "i_shape" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dbe9e5238d6b9c694c08415bf00fb370b089949bd818ab01f41f8927b8774c" +dependencies = [ + "i_float", + "serde", +] + +[[package]] +name = "i_tree" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3e98b1520e49e252237edc238a39869da9f3241f2ec19dc788c1d24694d1e4" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "keyed_priority_queue" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +dependencies = [ + "indexmap", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +dependencies = [ + "bitflags 2.13.0", + "libc", + "plain", + "redox_syscall 0.8.1", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +dependencies = [ + "bitflags 2.13.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.13.0", + "cfg_aliases", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "rustc-hash 1.1.0", + "spirv", + "strum", + "termcolor", + "thiserror 2.0.18", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.13.0", + "jni-sys 0.3.1", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.13.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.13.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.13.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.13.0", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.13.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "orbclient" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" +dependencies = [ + "libc", + "libredox", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +dependencies = [ + "memchr", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.6", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "piper" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" + +[[package]] +name = "pxfm" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" + +[[package]] +name = "pyo3" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c" +dependencies = [ + "libc", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", +] + +[[package]] +name = "pyo3-build-config" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078" +dependencies = [ + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.39.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "r2r" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b36b61a6252e8e7a24919b9877dacf1dc9f0ac4c2d0eba91c68b35c1b2283ed2" +dependencies = [ + "force-send-sync", + "futures", + "indexmap", + "lazy_static", + "log", + "phf", + "prettyplease", + "proc-macro2", + "quote", + "r2r_actions", + "r2r_common", + "r2r_macros", + "r2r_msg_gen", + "r2r_rcl", + "rayon", + "serde", + "serde_json", + "syn", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "r2r_actions" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca8488195951aaadef421b470c823cd095848bebf2004ff96ef5d351067eac1" +dependencies = [ + "bindgen", + "r2r_common", + "r2r_msg_gen", + "r2r_rcl", +] + +[[package]] +name = "r2r_common" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +dependencies = [ + "bindgen", + "os_str_bytes", + "regex", + "sha2", +] + +[[package]] +name = "r2r_macros" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "r2r_msg_gen" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03d5e77385a6b959014c14c45a444e1fbff99afad70912e120c21c30e7a65488" +dependencies = [ + "bindgen", + "force-send-sync", + "itertools 0.10.5", + "phf", + "proc-macro2", + "quote", + "r2r_common", + "r2r_rcl", + "rayon", + "syn", +] + +[[package]] +name = "r2r_rcl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +dependencies = [ + "bindgen", + "paste", + "r2r_common", + "widestring", +] + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "redox_syscall" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "regex" +version = "1.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "robust" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" + +[[package]] +name = "rstar" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" +dependencies = [ + "heapless", + "num-traits", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.13.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.13.0", + "errno", + "libc", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.13.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.13.0", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.4", + "thiserror 2.0.18", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spade" +version = "2.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa" +dependencies = [ + "hashbrown 0.16.1", + "num-traits", + "robust", + "smallvec", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.25.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.2", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "uds_windows" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" +dependencies = [ + "memoffset", + "tempfile", + "windows-sys 0.61.2", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" +dependencies = [ + "cc", + "downcast-rs", + "rustix 1.1.4", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" +dependencies = [ + "bitflags 2.13.0", + "rustix 1.1.4", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.13.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" +dependencies = [ + "rustix 1.1.4", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" +dependencies = [ + "bitflags 2.13.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" +dependencies = [ + "proc-macro2", + "quick-xml 0.39.4", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2 0.6.4", + "objc2-foundation 0.3.2", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + +[[package]] +name = "wgpu" +version = "24.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" +dependencies = [ + "arrayvec", + "bitflags 2.13.0", + "cfg_aliases", + "document-features", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "24.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.13.0", + "cfg_aliases", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.18", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "24.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.13.0", + "bytemuck", + "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "ordered-float", + "parking_lot", + "profiling", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.18", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows", +] + +[[package]] +name = "wgpu-types" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +dependencies = [ + "bitflags 2.13.0", + "js-sys", + "log", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winit" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.13.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.4", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.13.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zbus" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand 0.8.6", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +dependencies = [ + "quick-xml 0.30.0", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] From 102508ddab703b73b7aa299b2b50660a71bd7b02 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 03:02:59 +0200 Subject: [PATCH 36/48] Remove old pks --- .../bitbots_rust_nav/Cargo.lock | 4320 ----------------- .../bitbots_rust_nav/Cargo.toml | 23 - .../bitbots_rust_nav/README.md | 25 - .../bitbots_rust_nav/src/bin.rs | 168 - .../bitbots_rust_nav/src/lib.rs | 17 - .../bitbots_rust_nav/src/map.rs | 84 - .../bitbots_rust_nav/src/obstacle.rs | 201 - .../bitbots_rust_nav/src/planner.rs | 167 - 8 files changed, 5005 deletions(-) delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/Cargo.lock delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/Cargo.toml delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/README.md delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/src/bin.rs delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/src/lib.rs delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/src/map.rs delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs delete mode 100644 src/bitbots_navigation/bitbots_rust_nav/src/planner.rs diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock b/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock deleted file mode 100644 index 4269847ab8..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock +++ /dev/null @@ -1,4320 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "ab_glyph" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" - -[[package]] -name = "accesskit" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" - -[[package]] -name = "accesskit_atspi_common" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" -dependencies = [ - "accesskit", - "accesskit_consumer", - "atspi-common", - "serde", - "thiserror 1.0.69", - "zvariant", -] - -[[package]] -name = "accesskit_consumer" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" -dependencies = [ - "accesskit", - "hashbrown", - "immutable-chunkmap", -] - -[[package]] -name = "accesskit_macos" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "accesskit_unix" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" -dependencies = [ - "accesskit", - "accesskit_atspi_common", - "async-channel", - "async-executor", - "async-task", - "atspi", - "futures-lite", - "futures-util", - "serde", - "zbus", -] - -[[package]] -name = "accesskit_windows" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown", - "paste", - "static_assertions", - "windows", - "windows-core", -] - -[[package]] -name = "accesskit_winit" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" -dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_unix", - "accesskit_windows", - "raw-window-handle", - "winit", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.3", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "android-activity" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" -dependencies = [ - "android-properties", - "bitflags 2.9.1", - "cc", - "cesu8", - "jni", - "jni-sys", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys 0.6.0+11769913", - "num_enum", - "thiserror 1.0.69", -] - -[[package]] -name = "android-properties" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "arboard" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" -dependencies = [ - "clipboard-win", - "image", - "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", - "parking_lot", - "percent-encoding", - "windows-sys 0.59.0", - "x11rb", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix 1.0.7", - "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix 1.0.7", - "tracing", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-signal" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix 1.0.7", - "signal-hook-registry", - "slab", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atspi" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" -dependencies = [ - "atspi-common", - "atspi-connection", - "atspi-proxies", -] - -[[package]] -name = "atspi-common" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" -dependencies = [ - "enumflags2", - "serde", - "static_assertions", - "zbus", - "zbus-lockstep", - "zbus-lockstep-macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "atspi-connection" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" -dependencies = [ - "atspi-common", - "atspi-proxies", - "futures-lite", - "zbus", -] - -[[package]] -name = "atspi-proxies" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" -dependencies = [ - "atspi-common", - "serde", - "zbus", - "zvariant", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitbots_rust_nav" -version = "0.2.0" -dependencies = [ - "eframe", - "geo", - "keyed_priority_queue", - "ordered-float", - "pyo3", - "rand 0.9.3", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" -dependencies = [ - "serde", -] - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2 0.5.2", -] - -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "bumpalo" -version = "3.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" - -[[package]] -name = "bytemuck" -version = "1.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "calloop" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" -dependencies = [ - "bitflags 2.9.1", - "log", - "polling", - "rustix 0.38.44", - "slab", - "thiserror 1.0.69", -] - -[[package]] -name = "calloop-wayland-source" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" -dependencies = [ - "calloop", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - -[[package]] -name = "cc" -version = "1.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfg-if" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "cgl" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" -dependencies = [ - "libc", -] - -[[package]] -name = "clipboard-win" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" -dependencies = [ - "error-code", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cursor-icon" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading", -] - -[[package]] -name = "document-features" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" -dependencies = [ - "litrs", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" - -[[package]] -name = "earcutr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" -dependencies = [ - "itertools", - "num-traits", -] - -[[package]] -name = "ecolor" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" -dependencies = [ - "bytemuck", - "emath", -] - -[[package]] -name = "eframe" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" -dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "egui-wgpu", - "egui-winit", - "egui_glow", - "glow", - "glutin", - "glutin-winit", - "image", - "js-sys", - "log", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "parking_lot", - "percent-encoding", - "profiling", - "raw-window-handle", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "web-time", - "winapi", - "windows-sys 0.59.0", - "winit", -] - -[[package]] -name = "egui" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" -dependencies = [ - "accesskit", - "ahash", - "bitflags 2.9.1", - "emath", - "epaint", - "log", - "nohash-hasher", - "profiling", -] - -[[package]] -name = "egui-wgpu" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" -dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "epaint", - "log", - "profiling", - "thiserror 1.0.69", - "type-map", - "web-time", - "wgpu", - "winit", -] - -[[package]] -name = "egui-winit" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" -dependencies = [ - "accesskit_winit", - "ahash", - "arboard", - "bytemuck", - "egui", - "log", - "profiling", - "raw-window-handle", - "smithay-clipboard", - "web-time", - "webbrowser", - "winit", -] - -[[package]] -name = "egui_glow" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" -dependencies = [ - "ahash", - "bytemuck", - "egui", - "glow", - "log", - "memoffset", - "profiling", - "wasm-bindgen", - "web-sys", - "winit", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "emath" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "endi" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "epaint" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" -dependencies = [ - "ab_glyph", - "ahash", - "bytemuck", - "ecolor", - "emath", - "epaint_default_fonts", - "log", - "nohash-hasher", - "parking_lot", - "profiling", -] - -[[package]] -name = "epaint_default_fonts" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "error-code" -version = "3.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" - -[[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "flate2" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "geo" -version = "0.29.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f0e6e028c581e82e6822a68869514e94c25e7f8ea669a2d8595bdf7461ccc5" -dependencies = [ - "earcutr", - "float_next_after", - "geo-types", - "geographiclib-rs", - "i_overlay", - "log", - "num-traits", - "robust", - "rstar", - "spade", -] - -[[package]] -name = "geo-types" -version = "0.7.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ddb1950450d67efee2bbc5e429c68d052a822de3aad010d28b351fbb705224" -dependencies = [ - "approx", - "num-traits", - "rayon", - "rstar", - "serde", -] - -[[package]] -name = "geographiclib-rs" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" -dependencies = [ - "libm", -] - -[[package]] -name = "gethostname" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -dependencies = [ - "libc", - "windows-targets 0.48.5", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "gl_generator" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" -dependencies = [ - "khronos_api", - "log", - "xml-rs", -] - -[[package]] -name = "glow" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" -dependencies = [ - "js-sys", - "slotmap", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "glutin" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" -dependencies = [ - "bitflags 2.9.1", - "cfg_aliases", - "cgl", - "dispatch2", - "glutin_egl_sys", - "glutin_glx_sys", - "glutin_wgl_sys", - "libloading", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "once_cell", - "raw-window-handle", - "wayland-sys", - "windows-sys 0.52.0", - "x11-dl", -] - -[[package]] -name = "glutin-winit" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" -dependencies = [ - "cfg_aliases", - "glutin", - "raw-window-handle", - "winit", -] - -[[package]] -name = "glutin_egl_sys" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" -dependencies = [ - "gl_generator", - "windows-sys 0.52.0", -] - -[[package]] -name = "glutin_glx_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" -dependencies = [ - "gl_generator", - "x11-dl", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.9.1", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.9.1", - "gpu-descriptor-types", - "hashbrown", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "heapless" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" -dependencies = [ - "hash32", - "stable_deref_trait", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "i_float" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775f9961a8d2f879725da8aff789bb20a3ddf297473e0c90af75e69313919490" -dependencies = [ - "serde", -] - -[[package]] -name = "i_key_sort" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" - -[[package]] -name = "i_overlay" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01882ce5ed786bf6e8f5167f171a4026cd129ce17d9ff5cbf1e6749b98628ece" -dependencies = [ - "i_float", - "i_key_sort", - "i_shape", - "i_tree", - "rayon", -] - -[[package]] -name = "i_shape" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27dbe9e5238d6b9c694c08415bf00fb370b089949bd818ab01f41f8927b8774c" -dependencies = [ - "i_float", - "serde", -] - -[[package]] -name = "i_tree" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" - -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "image" -version = "0.25.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" -dependencies = [ - "bytemuck", - "byteorder-lite", - "num-traits", - "png", - "tiff", -] - -[[package]] -name = "immutable-chunkmap" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "jobserver" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" -dependencies = [ - "getrandom 0.3.3", - "libc", -] - -[[package]] -name = "jpeg-decoder" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "keyed_priority_queue" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" -dependencies = [ - "indexmap", -] - -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - -[[package]] -name = "khronos_api" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" - -[[package]] -name = "libc" -version = "0.2.174" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.2", -] - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.9.1", - "libc", - "redox_syscall 0.5.13", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "litrs" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" - -[[package]] -name = "lock_api" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "memchr" -version = "2.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" - -[[package]] -name = "memmap2" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "metal" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" -dependencies = [ - "bitflags 2.9.1", - "block", - "core-graphics-types", - "foreign-types", - "log", - "objc", - "paste", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "naga" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" -dependencies = [ - "arrayvec", - "bit-set", - "bitflags 2.9.1", - "cfg_aliases", - "codespan-reporting", - "hexf-parse", - "indexmap", - "log", - "rustc-hash 1.1.0", - "spirv", - "strum", - "termcolor", - "thiserror 2.0.12", - "unicode-xid", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.9.1", - "jni-sys", - "log", - "ndk-sys 0.6.0+11769913", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" - -[[package]] -name = "objc2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" -dependencies = [ - "objc-sys", - "objc2-encode", -] - -[[package]] -name = "objc2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" -dependencies = [ - "objc2-encode", -] - -[[package]] -name = "objc2-app-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" -dependencies = [ - "bitflags 2.9.1", - "block2", - "libc", - "objc2 0.5.2", - "objc2-core-data", - "objc2-core-image", - "objc2-foundation 0.2.2", - "objc2-quartz-core", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-data" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-metal", -] - -[[package]] -name = "objc2-core-location" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-contacts", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-foundation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" -dependencies = [ - "bitflags 2.9.1", - "block2", - "dispatch", - "libc", - "objc2 0.5.2", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-link-presentation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-metal" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-metal", -] - -[[package]] -name = "objc2-symbols" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" -dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation 0.2.2", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "orbclient" -version = "0.3.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" -dependencies = [ - "libredox", -] - -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "owned_ttf_parser" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" -dependencies = [ - "ttf-parser", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.13", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "polling" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "profiling" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" - -[[package]] -name = "pyo3" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c" -dependencies = [ - "libc", - "once_cell", - "portable-atomic", - "pyo3-build-config", - "pyo3-ffi", - "pyo3-macros", -] - -[[package]] -name = "pyo3-build-config" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078" -dependencies = [ - "target-lexicon", -] - -[[package]] -name = "pyo3-ffi" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b" -dependencies = [ - "libc", - "pyo3-build-config", -] - -[[package]] -name = "pyo3-macros" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771" -dependencies = [ - "proc-macro2", - "pyo3-macros-backend", - "quote", - "syn", -] - -[[package]] -name = "pyo3-macros-backend" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "quick-xml" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "renderdoc-sys" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" - -[[package]] -name = "robust" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" - -[[package]] -name = "rstar" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" -dependencies = [ - "heapless", - "num-traits", - "smallvec", -] - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sctk-adwaita" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" -dependencies = [ - "ab_glyph", - "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia", -] - -[[package]] -name = "serde" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "slotmap" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" -dependencies = [ - "version_check", -] - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "smithay-client-toolkit" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" -dependencies = [ - "bitflags 2.9.1", - "calloop", - "calloop-wayland-source", - "cursor-icon", - "libc", - "log", - "memmap2", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "xkeysym", -] - -[[package]] -name = "smithay-clipboard" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" -dependencies = [ - "libc", - "smithay-client-toolkit", - "wayland-backend", -] - -[[package]] -name = "smol_str" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" -dependencies = [ - "serde", -] - -[[package]] -name = "spade" -version = "2.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ece03ff43cd2a9b57ebf776ea5e78bd30b3b4185a619f041079f4109f385034" -dependencies = [ - "hashbrown", - "num-traits", - "robust", - "smallvec", -] - -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strict-num" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "target-lexicon" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" - -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl 2.0.12", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tiff" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" -dependencies = [ - "flate2", - "jpeg-decoder", - "weezl", -] - -[[package]] -name = "tiny-skia" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" -dependencies = [ - "arrayref", - "arrayvec", - "bytemuck", - "cfg-if", - "log", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] - -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - -[[package]] -name = "type-map" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" -dependencies = [ - "rustc-hash 2.1.1", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wayland-backend" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" -dependencies = [ - "cc", - "downcast-rs", - "rustix 0.38.44", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" -dependencies = [ - "bitflags 2.9.1", - "rustix 0.38.44", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-csd-frame" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" -dependencies = [ - "bitflags 2.9.1", - "cursor-icon", - "wayland-backend", -] - -[[package]] -name = "wayland-cursor" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" -dependencies = [ - "rustix 0.38.44", - "wayland-client", - "xcursor", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-plasma" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" -dependencies = [ - "proc-macro2", - "quick-xml 0.37.5", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" -dependencies = [ - "dlib", - "log", - "once_cell", - "pkg-config", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webbrowser" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" -dependencies = [ - "core-foundation 0.10.1", - "jni", - "log", - "ndk-context", - "objc2 0.6.1", - "objc2-foundation 0.3.1", - "url", - "web-sys", -] - -[[package]] -name = "weezl" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" - -[[package]] -name = "wgpu" -version = "24.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" -dependencies = [ - "arrayvec", - "bitflags 2.9.1", - "cfg_aliases", - "document-features", - "js-sys", - "log", - "parking_lot", - "profiling", - "raw-window-handle", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-core" -version = "24.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" -dependencies = [ - "arrayvec", - "bit-vec", - "bitflags 2.9.1", - "cfg_aliases", - "document-features", - "indexmap", - "log", - "naga", - "once_cell", - "parking_lot", - "profiling", - "raw-window-handle", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 2.0.12", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-hal" -version = "24.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" -dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bitflags 2.9.1", - "bytemuck", - "cfg_aliases", - "core-graphics-types", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-descriptor", - "js-sys", - "khronos-egl", - "libc", - "libloading", - "log", - "metal", - "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", - "once_cell", - "ordered-float", - "parking_lot", - "profiling", - "raw-window-handle", - "renderdoc-sys", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 2.0.12", - "wasm-bindgen", - "web-sys", - "wgpu-types", - "windows", -] - -[[package]] -name = "wgpu-types" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" -dependencies = [ - "bitflags 2.9.1", - "js-sys", - "log", - "web-sys", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - -[[package]] -name = "winit" -version = "0.30.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" -dependencies = [ - "ahash", - "android-activity", - "atomic-waker", - "bitflags 2.9.1", - "block2", - "bytemuck", - "calloop", - "cfg_aliases", - "concurrent-queue", - "core-foundation 0.9.4", - "core-graphics", - "cursor-icon", - "dpi", - "js-sys", - "libc", - "memmap2", - "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", - "orbclient", - "percent-encoding", - "pin-project", - "raw-window-handle", - "redox_syscall 0.4.1", - "rustix 0.38.44", - "sctk-adwaita", - "smithay-client-toolkit", - "smol_str", - "tracing", - "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-plasma", - "web-sys", - "web-time", - "windows-sys 0.52.0", - "x11-dl", - "x11rb", - "xkbcommon-dl", -] - -[[package]] -name = "winnow" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "x11rb" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", - "rustix 0.38.44", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" - -[[package]] -name = "xcursor" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" - -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "xkbcommon-dl" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" -dependencies = [ - "bitflags 2.9.1", - "dlib", - "log", - "once_cell", - "xkeysym", -] - -[[package]] -name = "xkeysym" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" - -[[package]] -name = "xml-rs" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zbus" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus-lockstep" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" -dependencies = [ - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus-lockstep-macros" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "zbus-lockstep", - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - -[[package]] -name = "zbus_xml" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" -dependencies = [ - "quick-xml 0.30.0", - "serde", - "static_assertions", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zerocopy" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zvariant" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml b/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml deleted file mode 100644 index 8a86b5afd4..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "bitbots_rust_nav" -version = "0.2.0" -edition = "2021" - -[lib] -name = "bitbots_rust_nav" -crate-type = ["cdylib", "rlib"] - -[[bin]] -name = "interactive_nav_demo" -path = "src/bin.rs" - -[features] -gui = ["dep:eframe"] - -[dependencies] -eframe = {version="0.31.0", optional = true} -geo = "0.29.3" -keyed_priority_queue = "0.4.2" -ordered-float = "4.5.0" -pyo3 = "0.29.0" -rand = "0.9.3" \ No newline at end of file diff --git a/src/bitbots_navigation/bitbots_rust_nav/README.md b/src/bitbots_navigation/bitbots_rust_nav/README.md deleted file mode 100644 index ab482dfc25..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# bitbots_rust_nav - -A best-effort A*-on-visibility-graph implementation for path planning in obstacles maps where obstacles and the robot itself are assumed to be round. - -## Installation - -```bash -pip install . -``` - -## API - -It exports three classes - -### `RoundObstacle` - -Represents a round obstacle with public fields `center: (float, float)` and `radius: float`. Can be created with the constructor `RoundObstacle(center, radius)` - -### `ObstacleMapConfig` - -Represents all configuration values for how obstacles should be treated with public fields `dilate: float` - the value by which the radii of the obstacles should be dilated (this should be set to approximately your own radius) - and `num_vertices` - the number of vertices the polygons approximating the round obstacles should have. Can be created with the constructor `ObstacleMapConfig(dilate, num_vertices)` - -### `ObstacleMap` - -Represents a set of obstacles on a plane with a given config. This has two fields: `config: ObstacleMapConfig` and `obstacles: [RoundObstacle]`. Can be created with the constructor `ObstacleMap(config, obstacles)` diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs b/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs deleted file mode 100644 index 496ead9821..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs +++ /dev/null @@ -1,168 +0,0 @@ -#[cfg(feature = "gui")] -mod gui { - use bitbots_rust_nav::map::{ObstacleMap, ObstacleMapConfig}; - use bitbots_rust_nav::obstacle::{AnyObstacle, RoundObstacle}; - use eframe::egui; - - pub struct PathfindingApp { - config: ObstacleMapConfig, - obstacles: Vec, - start: Option<(f64, f64)>, - goal: Option<(f64, f64)>, - path: Vec<(f64, f64)>, - dragging: Option, - } - - impl Default for PathfindingApp { - fn default() -> Self { - let config = ObstacleMapConfig { - robot_radius: 0.3, - margin: 0.25, - num_vertices: 12, - }; - let obstacles = vec![ - RoundObstacle { - center: (1.0, 4.0), - radius: 0.13 / 2.0, - }, - RoundObstacle { - center: (4.2, 4.2), - radius: 1.3, - }, - RoundObstacle { - center: (5.0, 2.0), - radius: 0.5 / 2.0, - }, - RoundObstacle { - center: (10.0, 10.0), - radius: 0.5 / 2.0, - }, - ]; - Self { - config, - obstacles, - start: None, - goal: None, - path: Vec::new(), - dragging: None, - } - } - } - - impl eframe::App for PathfindingApp { - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - egui::CentralPanel::default().show(ctx, |ui| { - let (response, painter) = ui - .allocate_painter(egui::Vec2::new(500.0, 500.0), egui::Sense::click_and_drag()); - let rect = response.rect; - let to_screen = - |(x, y): (f64, f64)| rect.min + egui::vec2(x as f32 * 40.0, y as f32 * 40.0); - - if let Some(pos) = response.interact_pointer_pos() { - let world_pos = ( - ((pos.x - rect.min.x) / 40.0) as f64, - ((pos.y - rect.min.y) / 40.0) as f64, - ); - if response.clicked_by(egui::PointerButton::Primary) { - self.start = Some(world_pos); - } else if response.clicked_by(egui::PointerButton::Secondary) { - self.goal = Some(world_pos); - } - } - - if ctx.input(|i| i.modifiers.shift) { - if response.drag_started() { - if let Some(pos) = response.interact_pointer_pos() { - self.dragging = self.obstacles.iter().position(|o| { - let screen_pos = to_screen(o.center); - screen_pos.distance(pos) - < (o.radius + self.config.robot_radius + self.config.margin) - as f32 - * 40.0 - }); - } - } - - if let Some(idx) = self.dragging { - if let Some(pos) = response.interact_pointer_pos() { - self.obstacles[idx].center = ( - ((pos.x - rect.min.x) / 40.0) as f64, - ((pos.y - rect.min.y) / 40.0) as f64, - ); - } - } - if response.drag_stopped() { - self.dragging = None; - } - } - - for obstacle in &self.obstacles { - let pos = to_screen(obstacle.center); - let obstacle_layers = vec![ - ( - obstacle.radius + self.config.robot_radius + self.config.margin, - egui::Color32::YELLOW, - ), - ( - obstacle.radius + self.config.robot_radius, - egui::Color32::RED, - ), - (obstacle.radius, egui::Color32::BLACK), - ]; - for (radius, color) in obstacle_layers { - painter.circle_filled(pos, (radius as f32) * 40.0, color); - } - } - - if let (Some(start), Some(goal)) = (self.start, self.goal) { - let omap = ObstacleMap::new( - self.config, - self.obstacles.iter().cloned().map(AnyObstacle::Round).collect(), - ); - let time1 = std::time::Instant::now(); - self.path = omap.shortest_path(start, goal); - let time2 = std::time::Instant::now(); - println!("Pathfinding took: {:?}", time2 - time1); - for window in self.path.windows(2) { - if let [a, b] = window { - painter.line_segment( - [to_screen(*a), to_screen(*b)], - (2.0, egui::Color32::BLUE), - ); - } - } - } - }); - } - } - - pub fn run_gui() -> Result<(), eframe::Error> { - println!("Usage instructions:"); - println!(" - Left click to set the start position"); - println!(" - Right click to set the goal position"); - println!(" - Hold Shift to drag obstacles"); - println!(" - Have fun & Find bugs!"); - - let options = eframe::NativeOptions { - viewport: egui::ViewportBuilder::default() - .with_inner_size([500.0, 500.0]) - .with_resizable(false), - ..Default::default() - }; - eframe::run_native( - "Interactive Pathfinding", - options, - Box::new(|_| Ok(Box::new(PathfindingApp::default()))), - ) - } -} - -#[cfg(feature = "gui")] -fn main() -> Result<(), eframe::Error> { - gui::run_gui() -} - -#[cfg(not(feature = "gui"))] -fn main() { - println!("GUI feature is disabled. Run with --features gui to enable."); -} diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs b/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs deleted file mode 100644 index 4816b59834..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs +++ /dev/null @@ -1,17 +0,0 @@ -use map::{ObstacleMap, ObstacleMapConfig}; -use obstacle::{PolygonObstacle, RoundObstacle}; -use pyo3::prelude::*; - -pub mod map; -pub mod obstacle; -pub mod planner; - -#[pymodule] -fn bitbots_rust_nav(m: &Bound<'_, PyModule>) -> PyResult<()> { - m.add_class::()?; - m.add_class::()?; - m.add_class::()?; - m.add_class::()?; - // Further classes and functions can be added here - Ok(()) -} diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/map.rs b/src/bitbots_navigation/bitbots_rust_nav/src/map.rs deleted file mode 100644 index bfd3772c6c..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/src/map.rs +++ /dev/null @@ -1,84 +0,0 @@ -use geo::{BooleanOps, Coord, LineString, MultiPolygon, Polygon}; -use pyo3::prelude::*; - -use crate::{ - obstacle::{AnyObstacle, Obstacle}, - planner::PathPlanner, -}; - -/// Configuration values for the ObstacleMap, these should be given by ROS parameters -#[pyclass( - eq, - str = "ObstacleMapConfig(robot_radius={robot_radius:?}, margin={margin:?}, num_vertices={num_vertices:?})" -)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct ObstacleMapConfig { - /// All obstacles are inflated by this amount, so we can assume the robot itself is a point - #[pyo3(set, get)] - pub robot_radius: f64, - /// Normal plans should not be directly on the edge of an obstacle, - /// this margin is added if possible - #[pyo3(set, get)] - pub margin: f64, - /// The number of vertices that the polygon representing an obstacle has - #[pyo3(set, get)] - pub num_vertices: usize, -} - -#[pymethods] -impl ObstacleMapConfig { - #[new] - /// Create a new config with the given values - pub fn new(robot_radius: f64, margin: f64, num_vertices: usize) -> Self { - Self { - robot_radius, - margin, - num_vertices, - } - } -} - -#[pyclass(eq, str = "ObstacleMap(obstacles={obstacles:?})")] -#[derive(Debug, Clone, PartialEq)] -pub struct ObstacleMap { - #[pyo3(get, set)] - config: ObstacleMapConfig, - #[pyo3(get, set)] - obstacles: Vec, -} - -#[pymethods] -impl ObstacleMap { - #[new] - pub fn new(config: ObstacleMapConfig, obstacles: Vec) -> Self { - Self { config, obstacles } - } - - pub fn shortest_path(&self, start: (f64, f64), goal: (f64, f64)) -> Vec<(f64, f64)> { - PathPlanner::new(self, start, goal).shortest_path() - } -} - -impl ObstacleMap { - pub fn as_vertices(&self) -> Vec { - self.obstacles - .iter() - .flat_map(|obstacle| obstacle.as_vertices(&self.config)) - .collect() - } - - fn as_polygons(&self, margin: bool) -> Vec { - self.obstacles - .iter() - .map(|obstacle| obstacle.as_polygon(&self.config, margin)) - .collect() - } - - pub fn as_multipolygon(&self, margin: bool) -> MultiPolygon { - let polygons = self.as_polygons(margin); - polygons.iter().fold( - MultiPolygon::new(vec![Polygon::new(LineString::new(vec![]), vec![])]), - |a, b| a.union(b), - ) - } -} diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs b/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs deleted file mode 100644 index 88e8d70aed..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs +++ /dev/null @@ -1,201 +0,0 @@ -use pyo3::prelude::*; - -use geo::{BooleanOps, Coord, LineString, MultiPolygon, Polygon}; - -use crate::map::ObstacleMapConfig; - -pub trait Obstacle { - /// Return the vertices of this obstacle inflated by the robot size and margin for the visibility graph generation - fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec; - - /// Return the polygon representation of this obstacle inflated by the robot size and optionally the margin for intersection checking - fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon; -} - -/// A helper function to generate a num_vertices-sided polygon approximating a circle -fn regular_ngon(center: Coord, num_vertices: usize, radius: f64) -> Vec { - (0..num_vertices) - .map(|side| { - let angle = (side as f64) / (num_vertices as f64) * std::f64::consts::TAU; - center + Coord::from((radius * angle.cos(), radius * angle.sin())) - }) - .collect() -} - -/// A round obstacle -#[pyclass(eq, str = "RoundObstacle(center={center:?} radius={radius:?})")] -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct RoundObstacle { - /// The center of the obstacle - #[pyo3(get, set)] - pub center: (f64, f64), - /// The radius of the obstacle - #[pyo3(get, set)] - pub radius: f64, -} - -#[pymethods] -impl RoundObstacle { - #[new] - pub fn new(center: (f64, f64), radius: f64) -> Self { - Self { center, radius } - } -} - -/// Value subtracted from the radius of obstacles for intersection checking -pub const EPSILON: f64 = 0.01; - -impl Obstacle for RoundObstacle { - fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { - regular_ngon( - self.center.into(), - config.num_vertices, - self.radius + config.robot_radius + config.margin, - ) - } - - fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { - let inflation = if margin { - config.robot_radius + config.margin - } else { - config.robot_radius - }; - let vertices = regular_ngon( - self.center.into(), - config.num_vertices, - self.radius + inflation - EPSILON, - ); - Polygon::new(LineString::new(vertices), vec![]) - } -} - -/// An obstacle with an arbitrary (also concave) polygon shape -#[pyclass(eq, str = "PolygonObstacle(vertices={vertices:?})")] -#[derive(Debug, Clone, PartialEq)] -pub struct PolygonObstacle { - /// The vertices of the polygon outline (without a closing duplicate of the first vertex) - #[pyo3(get, set)] - pub vertices: Vec<(f64, f64)>, -} - -#[pymethods] -impl PolygonObstacle { - #[new] - pub fn new(vertices: Vec<(f64, f64)>) -> Self { - Self { vertices } - } -} - -impl PolygonObstacle { - /// Inflate the polygon by the given offset (Minkowski sum with a num_vertices-sided - /// approximation of a circle). This is done by unioning the polygon with a rectangle - /// for each edge and an ngon for each vertex. - fn buffered(&self, num_vertices: usize, offset: f64) -> Polygon { - let coords: Vec = self.vertices.iter().copied().map(Coord::from).collect(); - let base = Polygon::new(LineString::new(coords.clone()), vec![]); - if offset <= 0.0 { - return base; - } - let mut result = MultiPolygon::new(vec![base.clone()]); - for i in 0..coords.len() { - let a = coords[i]; - let b = coords[(i + 1) % coords.len()]; - let edge = b - a; - let length = edge.x.hypot(edge.y); - if length > 0.0 { - // Rectangle covering the edge inflated perpendicular to it - let normal = Coord::from((-edge.y / length * offset, edge.x / length * offset)); - let rectangle = Polygon::new( - LineString::new(vec![a + normal, b + normal, b - normal, a - normal]), - vec![], - ); - result = result.union(&rectangle); - } - // Regular ngon rounding the corner at each vertex - let corner = Polygon::new(LineString::new(regular_ngon(a, num_vertices, offset)), vec![]); - result = result.union(&corner); - } - // All parts overlap the base polygon, so the union is a single polygon - result.0.into_iter().next().unwrap_or(base) - } -} - -impl Obstacle for PolygonObstacle { - fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { - let polygon = self.buffered(config.num_vertices, config.robot_radius + config.margin); - let exterior = polygon.exterior(); - // Skip the closing duplicate of the first vertex - exterior.0[..exterior.0.len().saturating_sub(1)].to_vec() - } - - fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { - let inflation = if margin { - config.robot_radius + config.margin - } else { - config.robot_radius - }; - self.buffered(config.num_vertices, inflation - EPSILON) - } -} - -/// Any of the supported obstacle shapes, so they can be mixed in the same ObstacleMap -#[derive(Debug, Clone, PartialEq, FromPyObject, IntoPyObject)] -pub enum AnyObstacle { - Round(RoundObstacle), - Polygon(PolygonObstacle), -} - -impl Obstacle for AnyObstacle { - fn as_vertices(&self, config: &ObstacleMapConfig) -> Vec { - match self { - AnyObstacle::Round(obstacle) => obstacle.as_vertices(config), - AnyObstacle::Polygon(obstacle) => obstacle.as_vertices(config), - } - } - - fn as_polygon(&self, config: &ObstacleMapConfig, margin: bool) -> Polygon { - match self { - AnyObstacle::Round(obstacle) => obstacle.as_polygon(config, margin), - AnyObstacle::Polygon(obstacle) => obstacle.as_polygon(config, margin), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::map::{ObstacleMap, ObstacleMapConfig}; - use geo::Contains; - - fn config() -> ObstacleMapConfig { - ObstacleMapConfig { - robot_radius: 0.3, - margin: 0.1, - num_vertices: 12, - } - } - - #[test] - fn polygon_obstacle_is_inflated() { - let obstacle = - PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); - // The polygon inflated by the robot radius contains points outside of the original polygon - let critical = obstacle.as_polygon(&config(), false); - assert!(critical.contains(&Coord::from((-0.25, 0.5)))); - assert!(!critical.contains(&Coord::from((-0.35, 0.5)))); - // The polygon inflated by the robot radius and margin is even larger - let with_margin = obstacle.as_polygon(&config(), true); - assert!(with_margin.contains(&Coord::from((-0.35, 0.5)))); - } - - #[test] - fn path_avoids_polygon_obstacle() { - // A wall between the start and the goal - let wall = PolygonObstacle::new(vec![(2.0, -2.0), (2.2, -2.0), (2.2, 2.0), (2.0, 2.0)]); - let map = ObstacleMap::new(config(), vec![AnyObstacle::Polygon(wall)]); - let path = map.shortest_path((0.0, 0.0), (4.0, 0.0)); - // The path needs to route around one of the wall ends instead of going straight - assert!(path.len() > 2); - assert!(path.iter().any(|(_, y)| y.abs() > 2.0)); - } -} diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/planner.rs b/src/bitbots_navigation/bitbots_rust_nav/src/planner.rs deleted file mode 100644 index fa9027bb53..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/src/planner.rs +++ /dev/null @@ -1,167 +0,0 @@ -use std::{ - cmp::Reverse, - collections::{HashMap, HashSet}, -}; - -use geo::{Contains, Coord, Distance, Euclidean, Intersects, Line, MultiPolygon}; -use keyed_priority_queue::{Entry, KeyedPriorityQueue}; -use ordered_float::OrderedFloat; - -use crate::map::ObstacleMap; - -#[derive(Debug, Clone)] -pub struct PathPlanner { - vertices: Vec, - obstacle_critical: MultiPolygon, - obstacle_with_margin: MultiPolygon, - start: usize, - goal: usize, - open: KeyedPriorityQueue>>, - g_score: HashMap>, - successors: HashSet, - from: HashMap, -} - -const MULTIPLIER: f64 = 10.0; - -impl PathPlanner { - /// Create a new path planner planning task with the given map, start and goal - pub fn new(map: &ObstacleMap, start: (f64, f64), goal: (f64, f64)) -> Self { - let mut vertices = map.as_vertices(); - vertices.append(&mut vec![start.into(), goal.into()]); - let start: usize = vertices.len() - 2; - let goal = vertices.len() - 1; - let obstacle_critical = map.as_multipolygon(false); - let obstacle_with_margin = map.as_multipolygon(true); - let mut open = KeyedPriorityQueue::>>::new(); - open.push( - start, - Reverse(OrderedFloat(Euclidean::distance( - vertices[start], - vertices[goal], - ))), - ); - let from = HashMap::::new(); - let successors = HashSet::::from_iter(0..vertices.len()); - let mut g_score = HashMap::>::new(); - g_score.insert(start, OrderedFloat(0.0)); - Self { - vertices, - obstacle_critical, - obstacle_with_margin, - start, - goal, - open, - g_score, - successors, - from, - } - } - - /// Part of A* algorithm, calculates the heuristic for the given node. - /// Often the heuristic is the euclidean distance to the goal. - fn heuristic(&self, node: usize) -> OrderedFloat { - self.distance(node, self.goal) - } - - /// Calculates the euclidean distance between two vertices - fn distance(&self, from: usize, to: usize) -> OrderedFloat { - OrderedFloat(Euclidean::distance(self.vertices[from], self.vertices[to])) - } - - /// Part of A* algorithm, reconstructs the path from the start to the goal vertex - /// based on the predecessors calculated during the search - fn reconstruct_path(&self, vertex: usize) -> Vec<(f64, f64)> { - let mut path = vec![vertex]; - let mut current = vertex; - while let Some(previous) = self.from.get(¤t) { - current = *previous; - path.push(*previous); - } - path.reverse(); - path.into_iter() - .map(|idx| self.vertices[idx].x_y()) - .collect() - } - - // Calculates and rates the connections of the vertex - fn expand_node(&mut self, vertex: usize) { - let g_vertex = *self - .g_score - .get(&vertex) - .unwrap_or(&OrderedFloat(f64::INFINITY)); - for successor in self.successors.iter().cloned() { - let connection = Line::new(self.vertices[vertex], self.vertices[successor]); - // Check if the connection intersects with anything - let multiplier = if self.obstacle_with_margin.intersects(&connection) { - // Check if we are at the start or goal - // We want to always allow connections to the start and goal, - // but we want to penalize connections that intersect with an obstacles critical area - // So we don't want to connect the visibility graph through an obstacle except for the start and goal - if (self.start == vertex && self.goal == successor) // Best effort backup solution, so we allow the direct connection at high cost - // Also consider start and goal as inside the obstacle (at high cost if we are inside the critical area, and at low cost if we are inside the margin) - || (self.goal == successor && self.obstacle_with_margin.contains(&connection.end_point())) - || (self.start == vertex && self.obstacle_with_margin.contains(&connection.start_point()) - ) { - // Use high cost for connections that intersect with the critical area of an obstacle - if self.obstacle_critical.intersects(&connection) { - OrderedFloat(MULTIPLIER) - } else { - // When we are at the start or goal and the connection is inside the obstacle margin, - // but not critical we want to allow this connection without penalty. - // This way we avoid situations where the robot gets stuck. - // Image a situation where the robot follows the normal path around an obstacle. - // Due to the nature of things it's start point is not exactly on the edge. - // We therefore are inside the obstacle and get a high cost roughly 50 percent of the time. - // This leads to us going back to the vertex we came from - // (it has the shortest path though the high cost region) and trying again. - // Immediately after departing from the vertex we are inside the obstacle again (~50 percent of the time). - // This can lead to the robot getting stuck in a loop. - // We therefore add a margin around the obstacle where we don't penalize start and end connections, - // while prohibiting normal connections of the visibility graph (to avoid getting too close to the obstacle again). - OrderedFloat(1.0) - } - } else { - // Ignore connections that intersect with obstacles - // (except for the start and goal as they might be inside the obstacle and we do a best effort solution) - continue; - } - } else { - // Don't penalize connections that don't intersect with anything - OrderedFloat(1.0) - }; - - // Part of A* algorithm - let g_successor = *self - .g_score - .get(&successor) - .unwrap_or(&OrderedFloat(f64::INFINITY)); - let g_tentative = g_vertex + multiplier * self.distance(vertex, successor); - if g_tentative < g_successor { - self.from.insert(successor, vertex); - self.g_score.insert(successor, g_tentative); - let new_f_score = Reverse(g_tentative + self.heuristic(successor)); - match self.open.entry(successor) { - Entry::Occupied(entry) => { - entry.set_priority(new_f_score); - } - Entry::Vacant(entry) => { - entry.set_priority(new_f_score); - } - } - } - } - } - - /// Find the shortest path from the start to the goal considering the obstacles - pub fn shortest_path(mut self) -> Vec<(f64, f64)> { - while let Some((vertex, _)) = self.open.pop() { - if vertex == self.goal { - return self.reconstruct_path(vertex); - } - self.successors.remove(&vertex); - self.expand_node(vertex); - } - unreachable!() - } -} From 4e3183053e672f862fe9a4dc9c3ec9aa1e1a0491 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 03:07:51 +0200 Subject: [PATCH 37/48] Update src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in Co-authored-by: MegaIng --- src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in index d70732a9d1..8daa6fa86c 100644 --- a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -1,8 +1,4 @@ -# Need at least 3.21 for IMPORTED_TARGETS property that we rely on. -# NOTE! Ubuntu 20.04 comes 3.16.3 by default, so to use this you need -# to update cmake. This can be done by adding the kitware apt repo: -# https://apt.kitware.com cmake_minimum_required(VERSION "3.21") # traverse dependencies for all message packages. From 9a4252e3bd21d8c08e88c27585490aec3b6826d1 Mon Sep 17 00:00:00 2001 From: Florian Vahl Date: Tue, 30 Jun 2026 03:08:46 +0200 Subject: [PATCH 38/48] Format --- .../bitbots_global_planner/src/obstacle.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs index 778e115e4c..6544d3d94c 100644 --- a/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs @@ -23,7 +23,11 @@ fn regular_ngon(center: Coord, num_vertices: usize, radius: f64) -> Vec { } /// A round obstacle -#[pyclass(eq, from_py_object, str = "RoundObstacle(center={center:?} radius={radius:?})")] +#[pyclass( + eq, + from_py_object, + str = "RoundObstacle(center={center:?} radius={radius:?})" +)] #[derive(Debug, Clone, Copy, PartialEq)] pub struct RoundObstacle { /// The center of the obstacle @@ -112,7 +116,10 @@ impl PolygonObstacle { result = result.union(&rectangle); } // Regular ngon rounding the corner at each vertex - let corner = Polygon::new(LineString::new(regular_ngon(a, num_vertices, offset)), vec![]); + let corner = Polygon::new( + LineString::new(regular_ngon(a, num_vertices, offset)), + vec![], + ); result = result.union(&corner); } // All parts overlap the base polygon, so the union is a single polygon @@ -177,8 +184,7 @@ mod tests { #[test] fn polygon_obstacle_is_inflated() { - let obstacle = - PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); + let obstacle = PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); // The polygon inflated by the robot radius contains points outside of the original polygon let critical = obstacle.as_polygon(&config(), false); assert!(critical.contains(&Coord::from((-0.25, 0.5)))); From 85c4a9966406041be52e135d70c74c654395bc97 Mon Sep 17 00:00:00 2001 From: Jan Gutsche Date: Sat, 4 Jul 2026 08:01:55 +0900 Subject: [PATCH 39/48] WIP untested r2r_msg_gen vendoring --- Cargo.lock | 2 - Cargo.toml | 5 + patches/r2r_msg_gen-0.9.5/.cargo-ok | 1 + .../r2r_msg_gen-0.9.5/.cargo_vcs_info.json | 6 + patches/r2r_msg_gen-0.9.5/Cargo.lock | 525 + patches/r2r_msg_gen-0.9.5/Cargo.toml | 95 + patches/r2r_msg_gen-0.9.5/Cargo.toml.orig | 39 + patches/r2r_msg_gen-0.9.5/README.md | 1 + .../r2r_msg_gen-0.9.5/bindings/constants.rs | 1 + .../bindings/introspection_functions.rs | 1 + .../bindings/msg_bindings.rs | 34063 ++++++++++++++++ .../bindings/msg_bindings_doc_only.rs | 1 + .../r2r_msg_gen-0.9.5/bindings/msg_includes.h | 362 + patches/r2r_msg_gen-0.9.5/build.rs | 557 + .../r2r_msg_gen-0.9.5/src/introspection.rs | 256 + patches/r2r_msg_gen-0.9.5/src/lib.rs | 944 + 16 files changed, 36857 insertions(+), 2 deletions(-) create mode 100644 patches/r2r_msg_gen-0.9.5/.cargo-ok create mode 100644 patches/r2r_msg_gen-0.9.5/.cargo_vcs_info.json create mode 100644 patches/r2r_msg_gen-0.9.5/Cargo.lock create mode 100644 patches/r2r_msg_gen-0.9.5/Cargo.toml create mode 100644 patches/r2r_msg_gen-0.9.5/Cargo.toml.orig create mode 100644 patches/r2r_msg_gen-0.9.5/README.md create mode 100644 patches/r2r_msg_gen-0.9.5/bindings/constants.rs create mode 100644 patches/r2r_msg_gen-0.9.5/bindings/introspection_functions.rs create mode 100644 patches/r2r_msg_gen-0.9.5/bindings/msg_bindings.rs create mode 100644 patches/r2r_msg_gen-0.9.5/bindings/msg_bindings_doc_only.rs create mode 100644 patches/r2r_msg_gen-0.9.5/bindings/msg_includes.h create mode 100644 patches/r2r_msg_gen-0.9.5/build.rs create mode 100644 patches/r2r_msg_gen-0.9.5/src/introspection.rs create mode 100644 patches/r2r_msg_gen-0.9.5/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 2eb162cc84..0f4f8791cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2996,8 +2996,6 @@ dependencies = [ [[package]] name = "r2r_msg_gen" version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d5e77385a6b959014c14c45a444e1fbff99afad70912e120c21c30e7a65488" dependencies = [ "bindgen", "force-send-sync", diff --git a/Cargo.toml b/Cargo.toml index 43e0f2463a..e0eac0f36d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ members = [ "src/bitbots_misc/bitbots_extrinsic_calibration", "src/bitbots_navigation/bitbots_global_planner" ] +exclude = ["patches/r2r_msg_gen-0.9.5"] # Optional but recommended for modern Cargo resolver = "2" @@ -12,3 +13,7 @@ resolver = "2" [profile.colcon] inherits = "release" debug = true + +[patch.crates-io] +# Keep message generation working when bindgen emits the ROS type support handle as opaque. +r2r_msg_gen = { path = "patches/r2r_msg_gen-0.9.5" } diff --git a/patches/r2r_msg_gen-0.9.5/.cargo-ok b/patches/r2r_msg_gen-0.9.5/.cargo-ok new file mode 100644 index 0000000000..5f8b795830 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/.cargo-ok @@ -0,0 +1 @@ +{"v":1} \ No newline at end of file diff --git a/patches/r2r_msg_gen-0.9.5/.cargo_vcs_info.json b/patches/r2r_msg_gen-0.9.5/.cargo_vcs_info.json new file mode 100644 index 0000000000..f68e130a28 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "455ea630ec73ea821fc14c5d729bc51d0b42c7f0" + }, + "path_in_vcs": "r2r_msg_gen" +} \ No newline at end of file diff --git a/patches/r2r_msg_gen-0.9.5/Cargo.lock b/patches/r2r_msg_gen-0.9.5/Cargo.lock new file mode 100644 index 0000000000..ef84e84cfb --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/Cargo.lock @@ -0,0 +1,525 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", +] + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "either" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" + +[[package]] +name = "force-send-sync" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32688dcc448aa684426ecc398f9af78c55b0769515ccd12baa565daf6f32feb6" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +dependencies = [ + "memchr", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r2r_common" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +dependencies = [ + "bindgen", + "os_str_bytes", + "regex", + "sha2", +] + +[[package]] +name = "r2r_msg_gen" +version = "0.9.5" +dependencies = [ + "bindgen", + "force-send-sync", + "itertools", + "phf", + "proc-macro2", + "quote", + "r2r_common", + "r2r_rcl", + "rayon", + "syn", +] + +[[package]] +name = "r2r_rcl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +dependencies = [ + "bindgen", + "paste", + "r2r_common", + "widestring", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "syn" +version = "2.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" diff --git a/patches/r2r_msg_gen-0.9.5/Cargo.toml b/patches/r2r_msg_gen-0.9.5/Cargo.toml new file mode 100644 index 0000000000..a446a30692 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/Cargo.toml @@ -0,0 +1,95 @@ +# 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 = "r2r_msg_gen" +version = "0.9.5" +authors = ["Martin Dahl "] +build = "build.rs" +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Internal dependency to the r2r crate." +homepage = "https://github.com/sequenceplanner/r2r" +documentation = "https://docs.rs/r2r/latest/r2r" +readme = "README.md" +license = "MIT" +repository = "https://github.com/sequenceplanner/r2r" + +[package.metadata.docs.rs] +features = ["doc-only"] + +[features] +doc-only = [ + "r2r_common/doc-only", + "r2r_rcl/doc-only", +] +save-bindgen = ["r2r_rcl/save-bindgen"] + +[lib] +name = "r2r_msg_gen" +path = "src/lib.rs" + +[dependencies.force-send-sync] +version = "1.0.0" + +[dependencies.phf] +version = "0.11.1" +features = ["macros"] + +[dependencies.proc-macro2] +version = "1.0.60" + +[dependencies.quote] +version = "1.0.28" + +[dependencies.r2r_common] +version = "0.9.5" + +[dependencies.r2r_rcl] +version = "0.9.5" + +[dependencies.rayon] +version = "1.7.0" + +[dependencies.syn] +version = "2.0.18" + +[build-dependencies.bindgen] +version = "0.71.1" + +[build-dependencies.force-send-sync] +version = "1.0.0" + +[build-dependencies.itertools] +version = "0.10.5" + +[build-dependencies.proc-macro2] +version = "1.0.60" + +[build-dependencies.quote] +version = "1.0.28" + +[build-dependencies.r2r_common] +version = "0.9.5" + +[build-dependencies.r2r_rcl] +version = "0.9.5" + +[build-dependencies.rayon] +version = "1.7.0" + +[build-dependencies.syn] +version = "2.0.18" +features = ["full"] diff --git a/patches/r2r_msg_gen-0.9.5/Cargo.toml.orig b/patches/r2r_msg_gen-0.9.5/Cargo.toml.orig new file mode 100644 index 0000000000..acb0184b7a --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/Cargo.toml.orig @@ -0,0 +1,39 @@ +[package] +name = "r2r_msg_gen" +version = "0.9.5" +authors = ["Martin Dahl "] +description = "Internal dependency to the r2r crate." +license = "MIT" +edition = "2021" +readme = "README.md" +homepage = "https://github.com/sequenceplanner/r2r" +repository = "https://github.com/sequenceplanner/r2r" +documentation = "https://docs.rs/r2r/latest/r2r" + +[dependencies] +r2r_rcl = { path = "../r2r_rcl", version = "0.9.5" } +r2r_common = { path = "../r2r_common", version = "0.9.5" } +phf = { version = "0.11.1", features = ["macros"] } +quote = "1.0.28" +proc-macro2 = "1.0.60" +syn = "2.0.18" +force-send-sync = "1.0.0" +rayon = "1.7.0" + +[build-dependencies] +bindgen = "0.71.1" +r2r_rcl = { path = "../r2r_rcl", version = "0.9.5" } +r2r_common = { path = "../r2r_common", version = "0.9.5" } +quote = "1.0.28" +syn = { version = "2.0.18", features = ["full"] } +rayon = "1.7.0" +itertools = "0.10.5" +force-send-sync = "1.0.0" +proc-macro2 = "1.0.60" + +[features] +save-bindgen = ["r2r_rcl/save-bindgen"] +doc-only = ["r2r_common/doc-only", "r2r_rcl/doc-only"] + +[package.metadata.docs.rs] +features = ["doc-only"] diff --git a/patches/r2r_msg_gen-0.9.5/README.md b/patches/r2r_msg_gen-0.9.5/README.md new file mode 100644 index 0000000000..a51eb690f9 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/README.md @@ -0,0 +1 @@ +Internal dependency of r2r . diff --git a/patches/r2r_msg_gen-0.9.5/bindings/constants.rs b/patches/r2r_msg_gen-0.9.5/bindings/constants.rs new file mode 100644 index 0000000000..8c154e1a1d --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/bindings/constants.rs @@ -0,0 +1 @@ +# [cfg (not (feature = "doc-only"))] static CONSTANTS_MAP : phf :: Map < & 'static str , & [(& str , & str)] > = phf :: phf_map ! { "action_msgs__msg__GoalStatus" => & [("STATUS_ABORTED" , "_bindgen_ty_7") , ("STATUS_ACCEPTED" , "_bindgen_ty_2") , ("STATUS_CANCELED" , "_bindgen_ty_6") , ("STATUS_CANCELING" , "_bindgen_ty_4") , ("STATUS_EXECUTING" , "_bindgen_ty_3") , ("STATUS_SUCCEEDED" , "_bindgen_ty_5") , ("STATUS_UNKNOWN" , "_bindgen_ty_1")] , "action_msgs__srv__CancelGoal_Response" => & [("ERROR_GOAL_TERMINATED" , "_bindgen_ty_11") , ("ERROR_NONE" , "_bindgen_ty_8") , ("ERROR_REJECTED" , "_bindgen_ty_9") , ("ERROR_UNKNOWN_GOAL_ID" , "_bindgen_ty_10")] , "diagnostic_msgs__msg__DiagnosticStatus" => & [("ERROR" , "_bindgen_ty_14") , ("OK" , "_bindgen_ty_12") , ("STALE" , "_bindgen_ty_15") , ("WARN" , "_bindgen_ty_13")] , "lifecycle_msgs__msg__State" => & [("PRIMARY_STATE_ACTIVE" , "_bindgen_ty_19") , ("PRIMARY_STATE_FINALIZED" , "_bindgen_ty_20") , ("PRIMARY_STATE_INACTIVE" , "_bindgen_ty_18") , ("PRIMARY_STATE_UNCONFIGURED" , "_bindgen_ty_17") , ("PRIMARY_STATE_UNKNOWN" , "_bindgen_ty_16") , ("TRANSITION_STATE_ACTIVATING" , "_bindgen_ty_24") , ("TRANSITION_STATE_CLEANINGUP" , "_bindgen_ty_22") , ("TRANSITION_STATE_CONFIGURING" , "_bindgen_ty_21") , ("TRANSITION_STATE_DEACTIVATING" , "_bindgen_ty_25") , ("TRANSITION_STATE_ERRORPROCESSING" , "_bindgen_ty_26") , ("TRANSITION_STATE_SHUTTINGDOWN" , "_bindgen_ty_23")] , "lifecycle_msgs__msg__Transition" => & [("TRANSITION_ACTIVATE" , "_bindgen_ty_30") , ("TRANSITION_ACTIVE_SHUTDOWN" , "_bindgen_ty_34") , ("TRANSITION_CALLBACK_ERROR" , "_bindgen_ty_56") , ("TRANSITION_CALLBACK_FAILURE" , "_bindgen_ty_55") , ("TRANSITION_CALLBACK_SUCCESS" , "_bindgen_ty_54") , ("TRANSITION_CLEANUP" , "_bindgen_ty_29") , ("TRANSITION_CONFIGURE" , "_bindgen_ty_28") , ("TRANSITION_CREATE" , "_bindgen_ty_27") , ("TRANSITION_DEACTIVATE" , "_bindgen_ty_31") , ("TRANSITION_DESTROY" , "_bindgen_ty_35") , ("TRANSITION_INACTIVE_SHUTDOWN" , "_bindgen_ty_33") , ("TRANSITION_ON_ACTIVATE_ERROR" , "_bindgen_ty_44") , ("TRANSITION_ON_ACTIVATE_FAILURE" , "_bindgen_ty_43") , ("TRANSITION_ON_ACTIVATE_SUCCESS" , "_bindgen_ty_42") , ("TRANSITION_ON_CLEANUP_ERROR" , "_bindgen_ty_41") , ("TRANSITION_ON_CLEANUP_FAILURE" , "_bindgen_ty_40") , ("TRANSITION_ON_CLEANUP_SUCCESS" , "_bindgen_ty_39") , ("TRANSITION_ON_CONFIGURE_ERROR" , "_bindgen_ty_38") , ("TRANSITION_ON_CONFIGURE_FAILURE" , "_bindgen_ty_37") , ("TRANSITION_ON_CONFIGURE_SUCCESS" , "_bindgen_ty_36") , ("TRANSITION_ON_DEACTIVATE_ERROR" , "_bindgen_ty_47") , ("TRANSITION_ON_DEACTIVATE_FAILURE" , "_bindgen_ty_46") , ("TRANSITION_ON_DEACTIVATE_SUCCESS" , "_bindgen_ty_45") , ("TRANSITION_ON_ERROR_ERROR" , "_bindgen_ty_53") , ("TRANSITION_ON_ERROR_FAILURE" , "_bindgen_ty_52") , ("TRANSITION_ON_ERROR_SUCCESS" , "_bindgen_ty_51") , ("TRANSITION_ON_SHUTDOWN_ERROR" , "_bindgen_ty_50") , ("TRANSITION_ON_SHUTDOWN_FAILURE" , "_bindgen_ty_49") , ("TRANSITION_ON_SHUTDOWN_SUCCESS" , "_bindgen_ty_48") , ("TRANSITION_UNCONFIGURED_SHUTDOWN" , "_bindgen_ty_32")] , "nav_msgs__srv__LoadMap_Response" => & [("RESULT_INVALID_MAP_DATA" , "_bindgen_ty_59") , ("RESULT_INVALID_MAP_METADATA" , "_bindgen_ty_60") , ("RESULT_MAP_DOES_NOT_EXIST" , "_bindgen_ty_58") , ("RESULT_SUCCESS" , "_bindgen_ty_57") , ("RESULT_UNDEFINED_FAILURE" , "_bindgen_ty_61")] , "rcl_interfaces__msg__Log" => & [("DEBUG" , "_bindgen_ty_62") , ("ERROR" , "_bindgen_ty_65") , ("FATAL" , "_bindgen_ty_66") , ("INFO" , "_bindgen_ty_63") , ("WARN" , "_bindgen_ty_64")] , "rcl_interfaces__msg__ParameterType" => & [("PARAMETER_BOOL" , "_bindgen_ty_70") , ("PARAMETER_BOOL_ARRAY" , "_bindgen_ty_75") , ("PARAMETER_BYTE_ARRAY" , "_bindgen_ty_74") , ("PARAMETER_DOUBLE" , "_bindgen_ty_72") , ("PARAMETER_DOUBLE_ARRAY" , "_bindgen_ty_77") , ("PARAMETER_INTEGER" , "_bindgen_ty_71") , ("PARAMETER_INTEGER_ARRAY" , "_bindgen_ty_76") , ("PARAMETER_NOT_SET" , "_bindgen_ty_69") , ("PARAMETER_STRING" , "_bindgen_ty_73") , ("PARAMETER_STRING_ARRAY" , "_bindgen_ty_78")] , "rcl_interfaces__srv__ListParameters_Request" => & [("DEPTH_RECURSIVE" , "_bindgen_ty_79")] , "sensor_msgs__msg__BatteryState" => & [("POWER_SUPPLY_HEALTH_COLD" , "_bindgen_ty_91") , ("POWER_SUPPLY_HEALTH_DEAD" , "_bindgen_ty_88") , ("POWER_SUPPLY_HEALTH_GOOD" , "_bindgen_ty_86") , ("POWER_SUPPLY_HEALTH_OVERHEAT" , "_bindgen_ty_87") , ("POWER_SUPPLY_HEALTH_OVERVOLTAGE" , "_bindgen_ty_89") , ("POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE" , "_bindgen_ty_93") , ("POWER_SUPPLY_HEALTH_UNKNOWN" , "_bindgen_ty_85") , ("POWER_SUPPLY_HEALTH_UNSPEC_FAILURE" , "_bindgen_ty_90") , ("POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE" , "_bindgen_ty_92") , ("POWER_SUPPLY_STATUS_CHARGING" , "_bindgen_ty_81") , ("POWER_SUPPLY_STATUS_DISCHARGING" , "_bindgen_ty_82") , ("POWER_SUPPLY_STATUS_FULL" , "_bindgen_ty_84") , ("POWER_SUPPLY_STATUS_NOT_CHARGING" , "_bindgen_ty_83") , ("POWER_SUPPLY_STATUS_UNKNOWN" , "_bindgen_ty_80") , ("POWER_SUPPLY_TECHNOLOGY_LIFE" , "_bindgen_ty_98") , ("POWER_SUPPLY_TECHNOLOGY_LIMN" , "_bindgen_ty_100") , ("POWER_SUPPLY_TECHNOLOGY_LION" , "_bindgen_ty_96") , ("POWER_SUPPLY_TECHNOLOGY_LIPO" , "_bindgen_ty_97") , ("POWER_SUPPLY_TECHNOLOGY_NICD" , "_bindgen_ty_99") , ("POWER_SUPPLY_TECHNOLOGY_NIMH" , "_bindgen_ty_95") , ("POWER_SUPPLY_TECHNOLOGY_UNKNOWN" , "_bindgen_ty_94")] , "sensor_msgs__msg__JoyFeedback" => & [("TYPE_BUZZER" , "_bindgen_ty_103") , ("TYPE_LED" , "_bindgen_ty_101") , ("TYPE_RUMBLE" , "_bindgen_ty_102")] , "sensor_msgs__msg__NavSatFix" => & [("COVARIANCE_TYPE_APPROXIMATED" , "_bindgen_ty_105") , ("COVARIANCE_TYPE_DIAGONAL_KNOWN" , "_bindgen_ty_106") , ("COVARIANCE_TYPE_KNOWN" , "_bindgen_ty_107") , ("COVARIANCE_TYPE_UNKNOWN" , "_bindgen_ty_104")] , "sensor_msgs__msg__NavSatStatus" => & [("SERVICE_COMPASS" , "_bindgen_ty_114") , ("SERVICE_GALILEO" , "_bindgen_ty_115") , ("SERVICE_GLONASS" , "_bindgen_ty_113") , ("SERVICE_GPS" , "_bindgen_ty_112") , ("STATUS_FIX" , "_bindgen_ty_109") , ("STATUS_GBAS_FIX" , "_bindgen_ty_111") , ("STATUS_NO_FIX" , "_bindgen_ty_108") , ("STATUS_SBAS_FIX" , "_bindgen_ty_110")] , "sensor_msgs__msg__PointField" => & [("FLOAT32" , "_bindgen_ty_122") , ("FLOAT64" , "_bindgen_ty_123") , ("INT16" , "_bindgen_ty_118") , ("INT32" , "_bindgen_ty_120") , ("INT8" , "_bindgen_ty_116") , ("UINT16" , "_bindgen_ty_119") , ("UINT32" , "_bindgen_ty_121") , ("UINT8" , "_bindgen_ty_117")] , "sensor_msgs__msg__Range" => & [("INFRARED" , "_bindgen_ty_125") , ("ULTRASOUND" , "_bindgen_ty_124")] , "shape_msgs__msg__SolidPrimitive" => & [("BOX" , "_bindgen_ty_126") , ("BOX_X" , "_bindgen_ty_131") , ("BOX_Y" , "_bindgen_ty_132") , ("BOX_Z" , "_bindgen_ty_133") , ("CONE" , "_bindgen_ty_129") , ("CONE_HEIGHT" , "_bindgen_ty_137") , ("CONE_RADIUS" , "_bindgen_ty_138") , ("CYLINDER" , "_bindgen_ty_128") , ("CYLINDER_HEIGHT" , "_bindgen_ty_135") , ("CYLINDER_RADIUS" , "_bindgen_ty_136") , ("PRISM" , "_bindgen_ty_130") , ("PRISM_HEIGHT" , "_bindgen_ty_139") , ("SPHERE" , "_bindgen_ty_127") , ("SPHERE_RADIUS" , "_bindgen_ty_134")] , "statistics_msgs__msg__StatisticDataType" => & [("STATISTICS_DATA_TYPE_AVERAGE" , "_bindgen_ty_142") , ("STATISTICS_DATA_TYPE_MAXIMUM" , "_bindgen_ty_144") , ("STATISTICS_DATA_TYPE_MINIMUM" , "_bindgen_ty_143") , ("STATISTICS_DATA_TYPE_SAMPLE_COUNT" , "_bindgen_ty_146") , ("STATISTICS_DATA_TYPE_STDDEV" , "_bindgen_ty_145") , ("STATISTICS_DATA_TYPE_UNINITIALIZED" , "_bindgen_ty_141")] , "test_msgs__msg__Constants" => & [("BOOL_CONST" , "bool") , ("BYTE_CONST" , "_bindgen_ty_147") , ("CHAR_CONST" , "_bindgen_ty_148") , ("FLOAT32_CONST" , "f32") , ("FLOAT64_CONST" , "f64") , ("INT16_CONST" , "_bindgen_ty_151") , ("INT32_CONST" , "_bindgen_ty_153") , ("INT64_CONST" , "_bindgen_ty_155") , ("INT8_CONST" , "_bindgen_ty_149") , ("UINT16_CONST" , "_bindgen_ty_152") , ("UINT32_CONST" , "_bindgen_ty_154") , ("UINT64_CONST" , "_bindgen_ty_156") , ("UINT8_CONST" , "_bindgen_ty_150")] , "test_msgs__msg__Strings" => & [("STRING_CONST" , "& [u8 ; 13usize]")] , "tf2_msgs__msg__TF2Error" => & [("CONNECTIVITY_ERROR" , "_bindgen_ty_229") , ("EXTRAPOLATION_ERROR" , "_bindgen_ty_230") , ("INVALID_ARGUMENT_ERROR" , "_bindgen_ty_231") , ("LOOKUP_ERROR" , "_bindgen_ty_228") , ("NO_ERROR" , "_bindgen_ty_227") , ("TIMEOUT_ERROR" , "_bindgen_ty_232") , ("TRANSFORM_ERROR" , "_bindgen_ty_233")] , "visualization_msgs__msg__ImageMarker" => & [("ADD" , "_bindgen_ty_239") , ("CIRCLE" , "_bindgen_ty_234") , ("LINE_LIST" , "_bindgen_ty_236") , ("LINE_STRIP" , "_bindgen_ty_235") , ("POINTS" , "_bindgen_ty_238") , ("POLYGON" , "_bindgen_ty_237") , ("REMOVE" , "_bindgen_ty_240")] , "visualization_msgs__msg__InteractiveMarkerControl" => & [("BUTTON" , "_bindgen_ty_249") , ("FIXED" , "_bindgen_ty_245") , ("INHERIT" , "_bindgen_ty_244") , ("MENU" , "_bindgen_ty_248") , ("MOVE_3D" , "_bindgen_ty_254") , ("MOVE_AXIS" , "_bindgen_ty_250") , ("MOVE_PLANE" , "_bindgen_ty_251") , ("MOVE_ROTATE" , "_bindgen_ty_253") , ("MOVE_ROTATE_3D" , "_bindgen_ty_256") , ("NONE" , "_bindgen_ty_247") , ("ROTATE_3D" , "_bindgen_ty_255") , ("ROTATE_AXIS" , "_bindgen_ty_252") , ("VIEW_FACING" , "_bindgen_ty_246")] , "visualization_msgs__msg__InteractiveMarkerFeedback" => & [("BUTTON_CLICK" , "_bindgen_ty_276") , ("KEEP_ALIVE" , "_bindgen_ty_273") , ("MENU_SELECT" , "_bindgen_ty_275") , ("MOUSE_DOWN" , "_bindgen_ty_277") , ("MOUSE_UP" , "_bindgen_ty_278") , ("POSE_UPDATE" , "_bindgen_ty_274")] , "visualization_msgs__msg__InteractiveMarkerUpdate" => & [("KEEP_ALIVE" , "_bindgen_ty_279") , ("UPDATE" , "_bindgen_ty_280")] , "visualization_msgs__msg__Marker" => & [("ADD" , "_bindgen_ty_269") , ("ARROW" , "_bindgen_ty_257") , ("CUBE" , "_bindgen_ty_258") , ("CUBE_LIST" , "_bindgen_ty_263") , ("CYLINDER" , "_bindgen_ty_260") , ("DELETE" , "_bindgen_ty_271") , ("DELETEALL" , "_bindgen_ty_272") , ("LINE_LIST" , "_bindgen_ty_262") , ("LINE_STRIP" , "_bindgen_ty_261") , ("MESH_RESOURCE" , "_bindgen_ty_267") , ("MODIFY" , "_bindgen_ty_270") , ("POINTS" , "_bindgen_ty_265") , ("SPHERE" , "_bindgen_ty_259") , ("SPHERE_LIST" , "_bindgen_ty_264") , ("TEXT_VIEW_FACING" , "_bindgen_ty_266") , ("TRIANGLE_LIST" , "_bindgen_ty_268")] , "visualization_msgs__msg__MenuEntry" => & [("FEEDBACK" , "_bindgen_ty_241") , ("ROSLAUNCH" , "_bindgen_ty_243") , ("ROSRUN" , "_bindgen_ty_242")] } ; diff --git a/patches/r2r_msg_gen-0.9.5/bindings/introspection_functions.rs b/patches/r2r_msg_gen-0.9.5/bindings/introspection_functions.rs new file mode 100644 index 0000000000..7814baeb51 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/bindings/introspection_functions.rs @@ -0,0 +1 @@ +# [cfg (feature = "doc-only")] type IntrospectionFn = fn () -> * const rosidl_message_type_support_t ; # [cfg (not (feature = "doc-only"))] type IntrospectionFn = unsafe extern "C" fn () -> * const rosidl_message_type_support_t ; # [cfg (not (feature = "doc-only"))] static INTROSPECTION_FNS : phf :: Map < & 'static str , IntrospectionFn > = phf :: phf_map ! { "action_msgs__msg__GoalInfo" => rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalInfo as IntrospectionFn , "action_msgs__msg__GoalStatus" => rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatus as IntrospectionFn , "action_msgs__msg__GoalStatusArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatusArray as IntrospectionFn , "action_msgs__srv__CancelGoal_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Request as IntrospectionFn , "action_msgs__srv__CancelGoal_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Response as IntrospectionFn , "builtin_interfaces__msg__Duration" => rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Duration as IntrospectionFn , "builtin_interfaces__msg__Time" => rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Time as IntrospectionFn , "diagnostic_msgs__msg__DiagnosticArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticArray as IntrospectionFn , "diagnostic_msgs__msg__DiagnosticStatus" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticStatus as IntrospectionFn , "diagnostic_msgs__msg__KeyValue" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__KeyValue as IntrospectionFn , "diagnostic_msgs__srv__AddDiagnostics_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Request as IntrospectionFn , "diagnostic_msgs__srv__AddDiagnostics_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Response as IntrospectionFn , "diagnostic_msgs__srv__SelfTest_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Request as IntrospectionFn , "diagnostic_msgs__srv__SelfTest_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Response as IntrospectionFn , "geometry_msgs__msg__Accel" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Accel as IntrospectionFn , "geometry_msgs__msg__AccelStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelStamped as IntrospectionFn , "geometry_msgs__msg__AccelWithCovariance" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovariance as IntrospectionFn , "geometry_msgs__msg__AccelWithCovarianceStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovarianceStamped as IntrospectionFn , "geometry_msgs__msg__Inertia" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Inertia as IntrospectionFn , "geometry_msgs__msg__InertiaStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__InertiaStamped as IntrospectionFn , "geometry_msgs__msg__Point" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point as IntrospectionFn , "geometry_msgs__msg__Point32" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point32 as IntrospectionFn , "geometry_msgs__msg__PointStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PointStamped as IntrospectionFn , "geometry_msgs__msg__Polygon" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Polygon as IntrospectionFn , "geometry_msgs__msg__PolygonStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PolygonStamped as IntrospectionFn , "geometry_msgs__msg__Pose" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose as IntrospectionFn , "geometry_msgs__msg__Pose2D" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose2D as IntrospectionFn , "geometry_msgs__msg__PoseArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseArray as IntrospectionFn , "geometry_msgs__msg__PoseStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseStamped as IntrospectionFn , "geometry_msgs__msg__PoseWithCovariance" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovariance as IntrospectionFn , "geometry_msgs__msg__PoseWithCovarianceStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovarianceStamped as IntrospectionFn , "geometry_msgs__msg__Quaternion" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Quaternion as IntrospectionFn , "geometry_msgs__msg__QuaternionStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__QuaternionStamped as IntrospectionFn , "geometry_msgs__msg__Transform" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Transform as IntrospectionFn , "geometry_msgs__msg__TransformStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TransformStamped as IntrospectionFn , "geometry_msgs__msg__Twist" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Twist as IntrospectionFn , "geometry_msgs__msg__TwistStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistStamped as IntrospectionFn , "geometry_msgs__msg__TwistWithCovariance" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovariance as IntrospectionFn , "geometry_msgs__msg__TwistWithCovarianceStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovarianceStamped as IntrospectionFn , "geometry_msgs__msg__Vector3" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3 as IntrospectionFn , "geometry_msgs__msg__Vector3Stamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3Stamped as IntrospectionFn , "geometry_msgs__msg__Wrench" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Wrench as IntrospectionFn , "geometry_msgs__msg__WrenchStamped" => rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__WrenchStamped as IntrospectionFn , "lifecycle_msgs__msg__State" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__State as IntrospectionFn , "lifecycle_msgs__msg__Transition" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__Transition as IntrospectionFn , "lifecycle_msgs__msg__TransitionDescription" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionDescription as IntrospectionFn , "lifecycle_msgs__msg__TransitionEvent" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionEvent as IntrospectionFn , "lifecycle_msgs__srv__ChangeState_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Request as IntrospectionFn , "lifecycle_msgs__srv__ChangeState_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Response as IntrospectionFn , "lifecycle_msgs__srv__GetAvailableStates_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Request as IntrospectionFn , "lifecycle_msgs__srv__GetAvailableStates_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Response as IntrospectionFn , "lifecycle_msgs__srv__GetAvailableTransitions_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request as IntrospectionFn , "lifecycle_msgs__srv__GetAvailableTransitions_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response as IntrospectionFn , "lifecycle_msgs__srv__GetState_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Request as IntrospectionFn , "lifecycle_msgs__srv__GetState_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Response as IntrospectionFn , "nav_msgs__msg__GridCells" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__GridCells as IntrospectionFn , "nav_msgs__msg__MapMetaData" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__MapMetaData as IntrospectionFn , "nav_msgs__msg__OccupancyGrid" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__OccupancyGrid as IntrospectionFn , "nav_msgs__msg__Odometry" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Odometry as IntrospectionFn , "nav_msgs__msg__Path" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Path as IntrospectionFn , "nav_msgs__srv__GetMap_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Request as IntrospectionFn , "nav_msgs__srv__GetMap_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Response as IntrospectionFn , "nav_msgs__srv__GetPlan_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Request as IntrospectionFn , "nav_msgs__srv__GetPlan_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Response as IntrospectionFn , "nav_msgs__srv__LoadMap_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Request as IntrospectionFn , "nav_msgs__srv__LoadMap_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Response as IntrospectionFn , "nav_msgs__srv__SetMap_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Request as IntrospectionFn , "nav_msgs__srv__SetMap_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Response as IntrospectionFn , "rcl_interfaces__msg__FloatingPointRange" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__FloatingPointRange as IntrospectionFn , "rcl_interfaces__msg__IntegerRange" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__IntegerRange as IntrospectionFn , "rcl_interfaces__msg__ListParametersResult" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ListParametersResult as IntrospectionFn , "rcl_interfaces__msg__Log" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Log as IntrospectionFn , "rcl_interfaces__msg__Parameter" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Parameter as IntrospectionFn , "rcl_interfaces__msg__ParameterDescriptor" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterDescriptor as IntrospectionFn , "rcl_interfaces__msg__ParameterEvent" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEvent as IntrospectionFn , "rcl_interfaces__msg__ParameterEventDescriptors" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEventDescriptors as IntrospectionFn , "rcl_interfaces__msg__ParameterType" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterType as IntrospectionFn , "rcl_interfaces__msg__ParameterValue" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterValue as IntrospectionFn , "rcl_interfaces__msg__SetParametersResult" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__SetParametersResult as IntrospectionFn , "rcl_interfaces__srv__DescribeParameters_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Request as IntrospectionFn , "rcl_interfaces__srv__DescribeParameters_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Response as IntrospectionFn , "rcl_interfaces__srv__GetParameterTypes_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Request as IntrospectionFn , "rcl_interfaces__srv__GetParameterTypes_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Response as IntrospectionFn , "rcl_interfaces__srv__GetParameters_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Request as IntrospectionFn , "rcl_interfaces__srv__GetParameters_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Response as IntrospectionFn , "rcl_interfaces__srv__ListParameters_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Request as IntrospectionFn , "rcl_interfaces__srv__ListParameters_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Response as IntrospectionFn , "rcl_interfaces__srv__SetParametersAtomically_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Request as IntrospectionFn , "rcl_interfaces__srv__SetParametersAtomically_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Response as IntrospectionFn , "rcl_interfaces__srv__SetParameters_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Request as IntrospectionFn , "rcl_interfaces__srv__SetParameters_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Response as IntrospectionFn , "rosgraph_msgs__msg__Clock" => rosidl_typesupport_introspection_c__get_message_type_support_handle__rosgraph_msgs__msg__Clock as IntrospectionFn , "sensor_msgs__msg__BatteryState" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__BatteryState as IntrospectionFn , "sensor_msgs__msg__CameraInfo" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CameraInfo as IntrospectionFn , "sensor_msgs__msg__ChannelFloat32" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__ChannelFloat32 as IntrospectionFn , "sensor_msgs__msg__CompressedImage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CompressedImage as IntrospectionFn , "sensor_msgs__msg__FluidPressure" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__FluidPressure as IntrospectionFn , "sensor_msgs__msg__Illuminance" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Illuminance as IntrospectionFn , "sensor_msgs__msg__Image" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Image as IntrospectionFn , "sensor_msgs__msg__Imu" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Imu as IntrospectionFn , "sensor_msgs__msg__JointState" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JointState as IntrospectionFn , "sensor_msgs__msg__Joy" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Joy as IntrospectionFn , "sensor_msgs__msg__JoyFeedback" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedback as IntrospectionFn , "sensor_msgs__msg__JoyFeedbackArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedbackArray as IntrospectionFn , "sensor_msgs__msg__LaserEcho" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserEcho as IntrospectionFn , "sensor_msgs__msg__LaserScan" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserScan as IntrospectionFn , "sensor_msgs__msg__MagneticField" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MagneticField as IntrospectionFn , "sensor_msgs__msg__MultiDOFJointState" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiDOFJointState as IntrospectionFn , "sensor_msgs__msg__MultiEchoLaserScan" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiEchoLaserScan as IntrospectionFn , "sensor_msgs__msg__NavSatFix" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatFix as IntrospectionFn , "sensor_msgs__msg__NavSatStatus" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatStatus as IntrospectionFn , "sensor_msgs__msg__PointCloud" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud as IntrospectionFn , "sensor_msgs__msg__PointCloud2" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud2 as IntrospectionFn , "sensor_msgs__msg__PointField" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointField as IntrospectionFn , "sensor_msgs__msg__Range" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Range as IntrospectionFn , "sensor_msgs__msg__RegionOfInterest" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RegionOfInterest as IntrospectionFn , "sensor_msgs__msg__RelativeHumidity" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RelativeHumidity as IntrospectionFn , "sensor_msgs__msg__Temperature" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Temperature as IntrospectionFn , "sensor_msgs__msg__TimeReference" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__TimeReference as IntrospectionFn , "sensor_msgs__srv__SetCameraInfo_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Request as IntrospectionFn , "sensor_msgs__srv__SetCameraInfo_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Response as IntrospectionFn , "shape_msgs__msg__Mesh" => rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Mesh as IntrospectionFn , "shape_msgs__msg__MeshTriangle" => rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__MeshTriangle as IntrospectionFn , "shape_msgs__msg__Plane" => rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Plane as IntrospectionFn , "shape_msgs__msg__SolidPrimitive" => rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__SolidPrimitive as IntrospectionFn , "statistics_msgs__msg__MetricsMessage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__MetricsMessage as IntrospectionFn , "statistics_msgs__msg__StatisticDataPoint" => rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataPoint as IntrospectionFn , "statistics_msgs__msg__StatisticDataType" => rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataType as IntrospectionFn , "std_msgs__msg__Bool" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Bool as IntrospectionFn , "std_msgs__msg__Byte" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Byte as IntrospectionFn , "std_msgs__msg__ByteMultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ByteMultiArray as IntrospectionFn , "std_msgs__msg__Char" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Char as IntrospectionFn , "std_msgs__msg__ColorRGBA" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ColorRGBA as IntrospectionFn , "std_msgs__msg__Empty" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Empty as IntrospectionFn , "std_msgs__msg__Float32" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32 as IntrospectionFn , "std_msgs__msg__Float32MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32MultiArray as IntrospectionFn , "std_msgs__msg__Float64" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64 as IntrospectionFn , "std_msgs__msg__Float64MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64MultiArray as IntrospectionFn , "std_msgs__msg__Header" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Header as IntrospectionFn , "std_msgs__msg__Int16" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16 as IntrospectionFn , "std_msgs__msg__Int16MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16MultiArray as IntrospectionFn , "std_msgs__msg__Int32" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32 as IntrospectionFn , "std_msgs__msg__Int32MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32MultiArray as IntrospectionFn , "std_msgs__msg__Int64" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64 as IntrospectionFn , "std_msgs__msg__Int64MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64MultiArray as IntrospectionFn , "std_msgs__msg__Int8" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8 as IntrospectionFn , "std_msgs__msg__Int8MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8MultiArray as IntrospectionFn , "std_msgs__msg__MultiArrayDimension" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayDimension as IntrospectionFn , "std_msgs__msg__MultiArrayLayout" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayLayout as IntrospectionFn , "std_msgs__msg__String" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__String as IntrospectionFn , "std_msgs__msg__UInt16" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16 as IntrospectionFn , "std_msgs__msg__UInt16MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16MultiArray as IntrospectionFn , "std_msgs__msg__UInt32" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32 as IntrospectionFn , "std_msgs__msg__UInt32MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32MultiArray as IntrospectionFn , "std_msgs__msg__UInt64" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64 as IntrospectionFn , "std_msgs__msg__UInt64MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64MultiArray as IntrospectionFn , "std_msgs__msg__UInt8" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8 as IntrospectionFn , "std_msgs__msg__UInt8MultiArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8MultiArray as IntrospectionFn , "stereo_msgs__msg__DisparityImage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__stereo_msgs__msg__DisparityImage as IntrospectionFn , "test_msgs__action__Fibonacci_Feedback" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Feedback as IntrospectionFn , "test_msgs__action__Fibonacci_FeedbackMessage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_FeedbackMessage as IntrospectionFn , "test_msgs__action__Fibonacci_GetResult_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Request as IntrospectionFn , "test_msgs__action__Fibonacci_GetResult_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Response as IntrospectionFn , "test_msgs__action__Fibonacci_Goal" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Goal as IntrospectionFn , "test_msgs__action__Fibonacci_Result" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Result as IntrospectionFn , "test_msgs__action__Fibonacci_SendGoal_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Request as IntrospectionFn , "test_msgs__action__Fibonacci_SendGoal_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Response as IntrospectionFn , "test_msgs__action__NestedMessage_Feedback" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Feedback as IntrospectionFn , "test_msgs__action__NestedMessage_FeedbackMessage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_FeedbackMessage as IntrospectionFn , "test_msgs__action__NestedMessage_GetResult_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Request as IntrospectionFn , "test_msgs__action__NestedMessage_GetResult_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Response as IntrospectionFn , "test_msgs__action__NestedMessage_Goal" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Goal as IntrospectionFn , "test_msgs__action__NestedMessage_Result" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Result as IntrospectionFn , "test_msgs__action__NestedMessage_SendGoal_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Request as IntrospectionFn , "test_msgs__action__NestedMessage_SendGoal_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Response as IntrospectionFn , "test_msgs__msg__Arrays" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Arrays as IntrospectionFn , "test_msgs__msg__BasicTypes" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BasicTypes as IntrospectionFn , "test_msgs__msg__BoundedPlainSequences" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedPlainSequences as IntrospectionFn , "test_msgs__msg__BoundedSequences" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedSequences as IntrospectionFn , "test_msgs__msg__Builtins" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Builtins as IntrospectionFn , "test_msgs__msg__Constants" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Constants as IntrospectionFn , "test_msgs__msg__Defaults" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Defaults as IntrospectionFn , "test_msgs__msg__Empty" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Empty as IntrospectionFn , "test_msgs__msg__MultiNested" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__MultiNested as IntrospectionFn , "test_msgs__msg__Nested" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Nested as IntrospectionFn , "test_msgs__msg__Strings" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Strings as IntrospectionFn , "test_msgs__msg__UnboundedSequences" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__UnboundedSequences as IntrospectionFn , "test_msgs__msg__WStrings" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__WStrings as IntrospectionFn , "test_msgs__srv__Arrays_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Request as IntrospectionFn , "test_msgs__srv__Arrays_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Response as IntrospectionFn , "test_msgs__srv__BasicTypes_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Request as IntrospectionFn , "test_msgs__srv__BasicTypes_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Response as IntrospectionFn , "test_msgs__srv__Empty_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Request as IntrospectionFn , "test_msgs__srv__Empty_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Response as IntrospectionFn , "tf2_msgs__action__LookupTransform_Feedback" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Feedback as IntrospectionFn , "tf2_msgs__action__LookupTransform_FeedbackMessage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_FeedbackMessage as IntrospectionFn , "tf2_msgs__action__LookupTransform_GetResult_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Request as IntrospectionFn , "tf2_msgs__action__LookupTransform_GetResult_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Response as IntrospectionFn , "tf2_msgs__action__LookupTransform_Goal" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Goal as IntrospectionFn , "tf2_msgs__action__LookupTransform_Result" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Result as IntrospectionFn , "tf2_msgs__action__LookupTransform_SendGoal_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Request as IntrospectionFn , "tf2_msgs__action__LookupTransform_SendGoal_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Response as IntrospectionFn , "tf2_msgs__msg__TF2Error" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TF2Error as IntrospectionFn , "tf2_msgs__msg__TFMessage" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TFMessage as IntrospectionFn , "tf2_msgs__srv__FrameGraph_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Request as IntrospectionFn , "tf2_msgs__srv__FrameGraph_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Response as IntrospectionFn , "trajectory_msgs__msg__JointTrajectory" => rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectory as IntrospectionFn , "trajectory_msgs__msg__JointTrajectoryPoint" => rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectoryPoint as IntrospectionFn , "trajectory_msgs__msg__MultiDOFJointTrajectory" => rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectory as IntrospectionFn , "trajectory_msgs__msg__MultiDOFJointTrajectoryPoint" => rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectoryPoint as IntrospectionFn , "unique_identifier_msgs__msg__UUID" => rosidl_typesupport_introspection_c__get_message_type_support_handle__unique_identifier_msgs__msg__UUID as IntrospectionFn , "visualization_msgs__msg__ImageMarker" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__ImageMarker as IntrospectionFn , "visualization_msgs__msg__InteractiveMarker" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarker as IntrospectionFn , "visualization_msgs__msg__InteractiveMarkerControl" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerControl as IntrospectionFn , "visualization_msgs__msg__InteractiveMarkerFeedback" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerFeedback as IntrospectionFn , "visualization_msgs__msg__InteractiveMarkerInit" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerInit as IntrospectionFn , "visualization_msgs__msg__InteractiveMarkerPose" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerPose as IntrospectionFn , "visualization_msgs__msg__InteractiveMarkerUpdate" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerUpdate as IntrospectionFn , "visualization_msgs__msg__Marker" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__Marker as IntrospectionFn , "visualization_msgs__msg__MarkerArray" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MarkerArray as IntrospectionFn , "visualization_msgs__msg__MenuEntry" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MenuEntry as IntrospectionFn , "visualization_msgs__msg__MeshFile" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MeshFile as IntrospectionFn , "visualization_msgs__msg__UVCoordinate" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__UVCoordinate as IntrospectionFn , "visualization_msgs__srv__GetInteractiveMarkers_Request" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Request as IntrospectionFn , "visualization_msgs__srv__GetInteractiveMarkers_Response" => rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Response as IntrospectionFn } ; diff --git a/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings.rs b/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings.rs new file mode 100644 index 0000000000..1c5670ec34 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings.rs @@ -0,0 +1,34063 @@ +/* automatically generated by rust-bindgen 0.63.0 */ + +pub type rosidl_message_typesupport_handle_function = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const rosidl_message_type_support_t, + arg2: *const ::std::os::raw::c_char, + ) -> *const rosidl_message_type_support_t, +>; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __uint_least16_t = __uint16_t; +pub type uint_least16_t = __uint_least16_t; +#[repr(C)] +#[derive(Debug)] +pub struct unique_identifier_msgs__msg__UUID { + pub uuid: [u8; 16usize], +} +#[test] +fn bindgen_test_layout_unique_identifier_msgs__msg__UUID() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(unique_identifier_msgs__msg__UUID)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(unique_identifier_msgs__msg__UUID) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uuid) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(unique_identifier_msgs__msg__UUID), + "::", + stringify!(uuid) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct unique_identifier_msgs__msg__UUID__Sequence { + pub data: *mut unique_identifier_msgs__msg__UUID, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_unique_identifier_msgs__msg__UUID__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(unique_identifier_msgs__msg__UUID__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(unique_identifier_msgs__msg__UUID__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(unique_identifier_msgs__msg__UUID__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(unique_identifier_msgs__msg__UUID__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(unique_identifier_msgs__msg__UUID__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct builtin_interfaces__msg__Time { + pub sec: i32, + pub nanosec: u32, +} +#[test] +fn bindgen_test_layout_builtin_interfaces__msg__Time() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(builtin_interfaces__msg__Time)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(builtin_interfaces__msg__Time)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sec) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Time), + "::", + stringify!(sec) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nanosec) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Time), + "::", + stringify!(nanosec) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct builtin_interfaces__msg__Time__Sequence { + pub data: *mut builtin_interfaces__msg__Time, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_builtin_interfaces__msg__Time__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(builtin_interfaces__msg__Time__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(builtin_interfaces__msg__Time__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Time__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Time__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Time__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalInfo { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub stamp: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalInfo() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(action_msgs__msg__GoalInfo)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(action_msgs__msg__GoalInfo)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalInfo), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalInfo), + "::", + stringify!(stamp) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalInfo__Sequence { + pub data: *mut action_msgs__msg__GoalInfo, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalInfo__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__msg__GoalInfo__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__msg__GoalInfo__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalInfo__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalInfo__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalInfo__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const action_msgs__msg__GoalStatus__STATUS_UNKNOWN: _bindgen_ty_1 = + _bindgen_ty_1::action_msgs__msg__GoalStatus__STATUS_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_1 { + action_msgs__msg__GoalStatus__STATUS_UNKNOWN = 0, +} +pub const action_msgs__msg__GoalStatus__STATUS_ACCEPTED: _bindgen_ty_2 = + _bindgen_ty_2::action_msgs__msg__GoalStatus__STATUS_ACCEPTED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_2 { + action_msgs__msg__GoalStatus__STATUS_ACCEPTED = 1, +} +pub const action_msgs__msg__GoalStatus__STATUS_EXECUTING: _bindgen_ty_3 = + _bindgen_ty_3::action_msgs__msg__GoalStatus__STATUS_EXECUTING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_3 { + action_msgs__msg__GoalStatus__STATUS_EXECUTING = 2, +} +pub const action_msgs__msg__GoalStatus__STATUS_CANCELING: _bindgen_ty_4 = + _bindgen_ty_4::action_msgs__msg__GoalStatus__STATUS_CANCELING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_4 { + action_msgs__msg__GoalStatus__STATUS_CANCELING = 3, +} +pub const action_msgs__msg__GoalStatus__STATUS_SUCCEEDED: _bindgen_ty_5 = + _bindgen_ty_5::action_msgs__msg__GoalStatus__STATUS_SUCCEEDED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_5 { + action_msgs__msg__GoalStatus__STATUS_SUCCEEDED = 4, +} +pub const action_msgs__msg__GoalStatus__STATUS_CANCELED: _bindgen_ty_6 = + _bindgen_ty_6::action_msgs__msg__GoalStatus__STATUS_CANCELED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_6 { + action_msgs__msg__GoalStatus__STATUS_CANCELED = 5, +} +pub const action_msgs__msg__GoalStatus__STATUS_ABORTED: _bindgen_ty_7 = + _bindgen_ty_7::action_msgs__msg__GoalStatus__STATUS_ABORTED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_7 { + action_msgs__msg__GoalStatus__STATUS_ABORTED = 6, +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalStatus { + pub goal_info: action_msgs__msg__GoalInfo, + pub status: i8, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalStatus() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(action_msgs__msg__GoalStatus)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(action_msgs__msg__GoalStatus)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_info) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatus), + "::", + stringify!(goal_info) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatus), + "::", + stringify!(status) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalStatus__Sequence { + pub data: *mut action_msgs__msg__GoalStatus, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalStatus__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__msg__GoalStatus__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__msg__GoalStatus__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatus__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatus__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatus__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalStatusArray { + pub status_list: action_msgs__msg__GoalStatus__Sequence, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalStatusArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(action_msgs__msg__GoalStatusArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__msg__GoalStatusArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status_list) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatusArray), + "::", + stringify!(status_list) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__msg__GoalStatusArray__Sequence { + pub data: *mut action_msgs__msg__GoalStatusArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_action_msgs__msg__GoalStatusArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__msg__GoalStatusArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__msg__GoalStatusArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatusArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatusArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__msg__GoalStatusArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__srv__CancelGoal_Request { + pub goal_info: action_msgs__msg__GoalInfo, +} +#[test] +fn bindgen_test_layout_action_msgs__srv__CancelGoal_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__srv__CancelGoal_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(action_msgs__srv__CancelGoal_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_info) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Request), + "::", + stringify!(goal_info) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__srv__CancelGoal_Request__Sequence { + pub data: *mut action_msgs__srv__CancelGoal_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_action_msgs__srv__CancelGoal_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__srv__CancelGoal_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__srv__CancelGoal_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const action_msgs__srv__CancelGoal_Response__ERROR_NONE: _bindgen_ty_8 = + _bindgen_ty_8::action_msgs__srv__CancelGoal_Response__ERROR_NONE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_8 { + action_msgs__srv__CancelGoal_Response__ERROR_NONE = 0, +} +pub const action_msgs__srv__CancelGoal_Response__ERROR_REJECTED: _bindgen_ty_9 = + _bindgen_ty_9::action_msgs__srv__CancelGoal_Response__ERROR_REJECTED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_9 { + action_msgs__srv__CancelGoal_Response__ERROR_REJECTED = 1, +} +pub const action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID: _bindgen_ty_10 = + _bindgen_ty_10::action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_10 { + action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID = 2, +} +pub const action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED: _bindgen_ty_11 = + _bindgen_ty_11::action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_11 { + action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED = 3, +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__srv__CancelGoal_Response { + pub return_code: i8, + pub goals_canceling: action_msgs__msg__GoalInfo__Sequence, +} +#[test] +fn bindgen_test_layout_action_msgs__srv__CancelGoal_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(action_msgs__srv__CancelGoal_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__srv__CancelGoal_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).return_code) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Response), + "::", + stringify!(return_code) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goals_canceling) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Response), + "::", + stringify!(goals_canceling) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct action_msgs__srv__CancelGoal_Response__Sequence { + pub data: *mut action_msgs__srv__CancelGoal_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_action_msgs__srv__CancelGoal_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(action_msgs__srv__CancelGoal_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(action_msgs__srv__CancelGoal_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(action_msgs__srv__CancelGoal_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub type rosidl_service_typesupport_handle_function = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const rosidl_service_type_support_t, + arg2: *const ::std::os::raw::c_char, + ) -> *const rosidl_service_type_support_t, +>; +#[repr(C)] +#[derive(Debug)] +pub struct builtin_interfaces__msg__Duration { + pub sec: i32, + pub nanosec: u32, +} +#[test] +fn bindgen_test_layout_builtin_interfaces__msg__Duration() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(builtin_interfaces__msg__Duration)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(builtin_interfaces__msg__Duration) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sec) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Duration), + "::", + stringify!(sec) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nanosec) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Duration), + "::", + stringify!(nanosec) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct builtin_interfaces__msg__Duration__Sequence { + pub data: *mut builtin_interfaces__msg__Duration, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_builtin_interfaces__msg__Duration__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(builtin_interfaces__msg__Duration__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(builtin_interfaces__msg__Duration__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Duration__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Duration__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(builtin_interfaces__msg__Duration__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Header { + pub stamp: builtin_interfaces__msg__Time, + pub frame_id: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Header() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(std_msgs__msg__Header)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Header)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Header), + "::", + stringify!(stamp) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).frame_id) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Header), + "::", + stringify!(frame_id) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Header__Sequence { + pub data: *mut std_msgs__msg__Header, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Header__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Header__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Header__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Header__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Header__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Header__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const diagnostic_msgs__msg__DiagnosticStatus__OK: _bindgen_ty_12 = + _bindgen_ty_12::diagnostic_msgs__msg__DiagnosticStatus__OK; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_12 { + diagnostic_msgs__msg__DiagnosticStatus__OK = 0, +} +pub const diagnostic_msgs__msg__DiagnosticStatus__WARN: _bindgen_ty_13 = + _bindgen_ty_13::diagnostic_msgs__msg__DiagnosticStatus__WARN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_13 { + diagnostic_msgs__msg__DiagnosticStatus__WARN = 1, +} +pub const diagnostic_msgs__msg__DiagnosticStatus__ERROR: _bindgen_ty_14 = + _bindgen_ty_14::diagnostic_msgs__msg__DiagnosticStatus__ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_14 { + diagnostic_msgs__msg__DiagnosticStatus__ERROR = 2, +} +pub const diagnostic_msgs__msg__DiagnosticStatus__STALE: _bindgen_ty_15 = + _bindgen_ty_15::diagnostic_msgs__msg__DiagnosticStatus__STALE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_15 { + diagnostic_msgs__msg__DiagnosticStatus__STALE = 3, +} +#[repr(C)] +pub struct diagnostic_msgs__msg__KeyValue { + pub key: rosidl_runtime_c__String, + pub value: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__KeyValue() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(diagnostic_msgs__msg__KeyValue)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(diagnostic_msgs__msg__KeyValue)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__KeyValue), + "::", + stringify!(key) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__KeyValue), + "::", + stringify!(value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__msg__KeyValue__Sequence { + pub data: *mut diagnostic_msgs__msg__KeyValue, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__KeyValue__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__msg__KeyValue__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__msg__KeyValue__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__KeyValue__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__KeyValue__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__KeyValue__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct diagnostic_msgs__msg__DiagnosticStatus { + pub level: u8, + pub name: rosidl_runtime_c__String, + pub message: rosidl_runtime_c__String, + pub hardware_id: rosidl_runtime_c__String, + pub values: diagnostic_msgs__msg__KeyValue__Sequence, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticStatus() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus), + "::", + stringify!(level) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).message) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus), + "::", + stringify!(message) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).hardware_id) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus), + "::", + stringify!(hardware_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).values) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus), + "::", + stringify!(values) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__msg__DiagnosticStatus__Sequence { + pub data: *mut diagnostic_msgs__msg__DiagnosticStatus, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticStatus__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticStatus__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct diagnostic_msgs__msg__DiagnosticArray { + pub header: std_msgs__msg__Header, + pub status: diagnostic_msgs__msg__DiagnosticStatus__Sequence, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__msg__DiagnosticArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray), + "::", + stringify!(status) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__msg__DiagnosticArray__Sequence { + pub data: *mut diagnostic_msgs__msg__DiagnosticArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__msg__DiagnosticArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__msg__DiagnosticArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct diagnostic_msgs__srv__AddDiagnostics_Request { + pub load_namespace: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).load_namespace) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request), + "::", + stringify!(load_namespace) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__srv__AddDiagnostics_Request__Sequence { + pub data: *mut diagnostic_msgs__srv__AddDiagnostics_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct diagnostic_msgs__srv__AddDiagnostics_Response { + pub success: bool, + pub message: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).success) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response), + "::", + stringify!(success) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).message) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response), + "::", + stringify!(message) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__srv__AddDiagnostics_Response__Sequence { + pub data: *mut diagnostic_msgs__srv__AddDiagnostics_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__AddDiagnostics_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__srv__SelfTest_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__SelfTest_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__srv__SelfTest_Request__Sequence { + pub data: *mut diagnostic_msgs__srv__SelfTest_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__SelfTest_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct diagnostic_msgs__srv__SelfTest_Response { + pub id: rosidl_runtime_c__String, + pub passed: u8, + pub status: diagnostic_msgs__msg__DiagnosticStatus__Sequence, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__SelfTest_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).passed) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response), + "::", + stringify!(passed) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response), + "::", + stringify!(status) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct diagnostic_msgs__srv__SelfTest_Response__Sequence { + pub data: *mut diagnostic_msgs__srv__SelfTest_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(diagnostic_msgs__srv__SelfTest_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(diagnostic_msgs__srv__SelfTest_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Vector3 { + pub x: f64, + pub y: f64, + pub z: f64, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Vector3() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Vector3)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Vector3)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3), + "::", + stringify!(z) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Vector3__Sequence { + pub data: *mut geometry_msgs__msg__Vector3, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Vector3__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Vector3__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Vector3__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Accel { + pub linear: geometry_msgs__msg__Vector3, + pub angular: geometry_msgs__msg__Vector3, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Accel() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Accel)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Accel)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).linear) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Accel), + "::", + stringify!(linear) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angular) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Accel), + "::", + stringify!(angular) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Accel__Sequence { + pub data: *mut geometry_msgs__msg__Accel, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Accel__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Accel__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Accel__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Accel__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Accel__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Accel__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__AccelStamped { + pub header: std_msgs__msg__Header, + pub accel: geometry_msgs__msg__Accel, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__AccelStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accel) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelStamped), + "::", + stringify!(accel) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__AccelStamped__Sequence { + pub data: *mut geometry_msgs__msg__AccelStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__AccelStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__AccelWithCovariance { + pub accel: geometry_msgs__msg__Accel, + pub covariance: [f64; 36usize], +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovariance() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 336usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__AccelWithCovariance) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelWithCovariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accel) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovariance), + "::", + stringify!(accel) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).covariance) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovariance), + "::", + stringify!(covariance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__AccelWithCovariance__Sequence { + pub data: *mut geometry_msgs__msg__AccelWithCovariance, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovariance__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__AccelWithCovariance__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelWithCovariance__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovariance__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovariance__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovariance__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__AccelWithCovarianceStamped { + pub header: std_msgs__msg__Header, + pub accel: geometry_msgs__msg__AccelWithCovariance, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovarianceStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 368usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accel) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped), + "::", + stringify!(accel) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__AccelWithCovarianceStamped__Sequence { + pub data: *mut geometry_msgs__msg__AccelWithCovarianceStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovarianceStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + geometry_msgs__msg__AccelWithCovarianceStamped__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__AccelWithCovarianceStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Inertia { + pub m: f64, + pub com: geometry_msgs__msg__Vector3, + pub ixx: f64, + pub ixy: f64, + pub ixz: f64, + pub iyy: f64, + pub iyz: f64, + pub izz: f64, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Inertia() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Inertia)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Inertia)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(m) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).com) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(com) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ixx) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(ixx) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ixy) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(ixy) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ixz) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(ixz) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).iyy) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(iyy) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).iyz) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(iyz) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).izz) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia), + "::", + stringify!(izz) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Inertia__Sequence { + pub data: *mut geometry_msgs__msg__Inertia, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Inertia__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Inertia__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Inertia__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Inertia__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__InertiaStamped { + pub header: std_msgs__msg__Header, + pub inertia: geometry_msgs__msg__Inertia, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__InertiaStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__InertiaStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__InertiaStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__InertiaStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).inertia) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__InertiaStamped), + "::", + stringify!(inertia) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__InertiaStamped__Sequence { + pub data: *mut geometry_msgs__msg__InertiaStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__InertiaStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__InertiaStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__InertiaStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__InertiaStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__InertiaStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__InertiaStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Point { + pub x: f64, + pub y: f64, + pub z: f64, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Point() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Point)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Point)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point), + "::", + stringify!(z) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Point__Sequence { + pub data: *mut geometry_msgs__msg__Point, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Point__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Point__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Point__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Point32 { + pub x: f32, + pub y: f32, + pub z: f32, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Point32() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Point32)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Point32)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32), + "::", + stringify!(z) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Point32__Sequence { + pub data: *mut geometry_msgs__msg__Point32, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Point32__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Point32__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Point32__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Point32__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__PointStamped { + pub header: std_msgs__msg__Header, + pub point: geometry_msgs__msg__Point, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PointStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__PointStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PointStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PointStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).point) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PointStamped), + "::", + stringify!(point) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PointStamped__Sequence { + pub data: *mut geometry_msgs__msg__PointStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PointStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PointStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PointStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PointStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PointStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PointStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Polygon { + pub points: geometry_msgs__msg__Point32__Sequence, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Polygon() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Polygon)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Polygon)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Polygon), + "::", + stringify!(points) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Polygon__Sequence { + pub data: *mut geometry_msgs__msg__Polygon, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Polygon__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Polygon__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Polygon__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Polygon__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Polygon__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Polygon__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__PolygonStamped { + pub header: std_msgs__msg__Header, + pub polygon: geometry_msgs__msg__Polygon, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PolygonStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__PolygonStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PolygonStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PolygonStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).polygon) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PolygonStamped), + "::", + stringify!(polygon) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PolygonStamped__Sequence { + pub data: *mut geometry_msgs__msg__PolygonStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PolygonStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PolygonStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PolygonStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PolygonStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PolygonStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PolygonStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Quaternion { + pub x: f64, + pub y: f64, + pub z: f64, + pub w: f64, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Quaternion() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Quaternion)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Quaternion)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).z) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion), + "::", + stringify!(z) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).w) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion), + "::", + stringify!(w) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Quaternion__Sequence { + pub data: *mut geometry_msgs__msg__Quaternion, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Quaternion__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Quaternion__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Quaternion__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Quaternion__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Pose { + pub position: geometry_msgs__msg__Point, + pub orientation: geometry_msgs__msg__Quaternion, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Pose() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Pose)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Pose)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).position) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose), + "::", + stringify!(position) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).orientation) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose), + "::", + stringify!(orientation) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Pose__Sequence { + pub data: *mut geometry_msgs__msg__Pose, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Pose__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Pose__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Pose__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Pose2D { + pub x: f64, + pub y: f64, + pub theta: f64, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Pose2D() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Pose2D)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Pose2D)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).theta) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D), + "::", + stringify!(theta) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Pose2D__Sequence { + pub data: *mut geometry_msgs__msg__Pose2D, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Pose2D__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Pose2D__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Pose2D__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Pose2D__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__PoseArray { + pub header: std_msgs__msg__Header, + pub poses: geometry_msgs__msg__Pose__Sequence, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__PoseArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__PoseArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseArray), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).poses) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseArray), + "::", + stringify!(poses) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PoseArray__Sequence { + pub data: *mut geometry_msgs__msg__PoseArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__PoseStamped { + pub header: std_msgs__msg__Header, + pub pose: geometry_msgs__msg__Pose, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 88usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__PoseStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__PoseStamped)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseStamped), + "::", + stringify!(pose) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PoseStamped__Sequence { + pub data: *mut geometry_msgs__msg__PoseStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PoseWithCovariance { + pub pose: geometry_msgs__msg__Pose, + pub covariance: [f64; 36usize], +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovariance() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 344usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseWithCovariance) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseWithCovariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovariance), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).covariance) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovariance), + "::", + stringify!(covariance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PoseWithCovariance__Sequence { + pub data: *mut geometry_msgs__msg__PoseWithCovariance, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovariance__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseWithCovariance__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseWithCovariance__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovariance__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovariance__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovariance__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__PoseWithCovarianceStamped { + pub header: std_msgs__msg__Header, + pub pose: geometry_msgs__msg__PoseWithCovariance, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovarianceStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 376usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped), + "::", + stringify!(pose) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__PoseWithCovarianceStamped__Sequence { + pub data: *mut geometry_msgs__msg__PoseWithCovarianceStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovarianceStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__PoseWithCovarianceStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__QuaternionStamped { + pub header: std_msgs__msg__Header, + pub quaternion: geometry_msgs__msg__Quaternion, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__QuaternionStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__QuaternionStamped) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__QuaternionStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__QuaternionStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).quaternion) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__QuaternionStamped), + "::", + stringify!(quaternion) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__QuaternionStamped__Sequence { + pub data: *mut geometry_msgs__msg__QuaternionStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__QuaternionStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__QuaternionStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__QuaternionStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__QuaternionStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__QuaternionStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__QuaternionStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Transform { + pub translation: geometry_msgs__msg__Vector3, + pub rotation: geometry_msgs__msg__Quaternion, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Transform() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Transform)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Transform)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).translation) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Transform), + "::", + stringify!(translation) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).rotation) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Transform), + "::", + stringify!(rotation) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Transform__Sequence { + pub data: *mut geometry_msgs__msg__Transform, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Transform__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Transform__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Transform__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Transform__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Transform__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Transform__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__TransformStamped { + pub header: std_msgs__msg__Header, + pub child_frame_id: rosidl_runtime_c__String, + pub transform: geometry_msgs__msg__Transform, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TransformStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TransformStamped) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TransformStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).child_frame_id) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped), + "::", + stringify!(child_frame_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transform) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped), + "::", + stringify!(transform) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__TransformStamped__Sequence { + pub data: *mut geometry_msgs__msg__TransformStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TransformStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TransformStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TransformStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TransformStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Twist { + pub linear: geometry_msgs__msg__Vector3, + pub angular: geometry_msgs__msg__Vector3, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Twist() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Twist)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Twist)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).linear) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Twist), + "::", + stringify!(linear) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angular) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Twist), + "::", + stringify!(angular) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Twist__Sequence { + pub data: *mut geometry_msgs__msg__Twist, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Twist__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Twist__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Twist__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Twist__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Twist__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Twist__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__TwistStamped { + pub header: std_msgs__msg__Header, + pub twist: geometry_msgs__msg__Twist, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__TwistStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).twist) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistStamped), + "::", + stringify!(twist) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__TwistStamped__Sequence { + pub data: *mut geometry_msgs__msg__TwistStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TwistStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__TwistWithCovariance { + pub twist: geometry_msgs__msg__Twist, + pub covariance: [f64; 36usize], +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovariance() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 336usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TwistWithCovariance) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistWithCovariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).twist) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovariance), + "::", + stringify!(twist) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).covariance) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovariance), + "::", + stringify!(covariance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__TwistWithCovariance__Sequence { + pub data: *mut geometry_msgs__msg__TwistWithCovariance, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovariance__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TwistWithCovariance__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistWithCovariance__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovariance__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovariance__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovariance__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__TwistWithCovarianceStamped { + pub header: std_msgs__msg__Header, + pub twist: geometry_msgs__msg__TwistWithCovariance, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovarianceStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 368usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).twist) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped), + "::", + stringify!(twist) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__TwistWithCovarianceStamped__Sequence { + pub data: *mut geometry_msgs__msg__TwistWithCovarianceStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovarianceStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + geometry_msgs__msg__TwistWithCovarianceStamped__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__TwistWithCovarianceStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__Vector3Stamped { + pub header: std_msgs__msg__Header, + pub vector: geometry_msgs__msg__Vector3, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Vector3Stamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Vector3Stamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Vector3Stamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3Stamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3Stamped), + "::", + stringify!(vector) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Vector3Stamped__Sequence { + pub data: *mut geometry_msgs__msg__Vector3Stamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Vector3Stamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Vector3Stamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Vector3Stamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3Stamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3Stamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Vector3Stamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Wrench { + pub force: geometry_msgs__msg__Vector3, + pub torque: geometry_msgs__msg__Vector3, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Wrench() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__Wrench)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(geometry_msgs__msg__Wrench)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).force) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Wrench), + "::", + stringify!(force) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).torque) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Wrench), + "::", + stringify!(torque) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__Wrench__Sequence { + pub data: *mut geometry_msgs__msg__Wrench, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__Wrench__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__Wrench__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__Wrench__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Wrench__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Wrench__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__Wrench__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct geometry_msgs__msg__WrenchStamped { + pub header: std_msgs__msg__Header, + pub wrench: geometry_msgs__msg__Wrench, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__WrenchStamped() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(geometry_msgs__msg__WrenchStamped)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__WrenchStamped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__WrenchStamped), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wrench) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__WrenchStamped), + "::", + stringify!(wrench) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct geometry_msgs__msg__WrenchStamped__Sequence { + pub data: *mut geometry_msgs__msg__WrenchStamped, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_geometry_msgs__msg__WrenchStamped__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(geometry_msgs__msg__WrenchStamped__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(geometry_msgs__msg__WrenchStamped__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__WrenchStamped__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__WrenchStamped__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(geometry_msgs__msg__WrenchStamped__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN: _bindgen_ty_16 = + _bindgen_ty_16::lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_16 { + lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN = 0, +} +pub const lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED: _bindgen_ty_17 = + _bindgen_ty_17::lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_17 { + lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED = 1, +} +pub const lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE: _bindgen_ty_18 = + _bindgen_ty_18::lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_18 { + lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE = 2, +} +pub const lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE: _bindgen_ty_19 = + _bindgen_ty_19::lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_19 { + lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE = 3, +} +pub const lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED: _bindgen_ty_20 = + _bindgen_ty_20::lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_20 { + lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED = 4, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING: _bindgen_ty_21 = + _bindgen_ty_21::lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_21 { + lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING = 10, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP: _bindgen_ty_22 = + _bindgen_ty_22::lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_22 { + lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP = 11, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN: _bindgen_ty_23 = + _bindgen_ty_23::lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_23 { + lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN = 12, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING: _bindgen_ty_24 = + _bindgen_ty_24::lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_24 { + lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING = 13, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING: _bindgen_ty_25 = + _bindgen_ty_25::lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_25 { + lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING = 14, +} +pub const lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING: _bindgen_ty_26 = + _bindgen_ty_26::lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_26 { + lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING = 15, +} +#[repr(C)] +pub struct lifecycle_msgs__msg__State { + pub id: u8, + pub label: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__State() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(lifecycle_msgs__msg__State)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lifecycle_msgs__msg__State)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__State), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__State), + "::", + stringify!(label) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__msg__State__Sequence { + pub data: *mut lifecycle_msgs__msg__State, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__State__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__State__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__State__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__State__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__State__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__State__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CREATE: _bindgen_ty_27 = + _bindgen_ty_27::lifecycle_msgs__msg__Transition__TRANSITION_CREATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_27 { + lifecycle_msgs__msg__Transition__TRANSITION_CREATE = 0, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE: _bindgen_ty_28 = + _bindgen_ty_28::lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_28 { + lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE = 1, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP: _bindgen_ty_29 = + _bindgen_ty_29::lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_29 { + lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP = 2, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE: _bindgen_ty_30 = + _bindgen_ty_30::lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_30 { + lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE = 3, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE: _bindgen_ty_31 = + _bindgen_ty_31::lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_31 { + lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE = 4, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN: _bindgen_ty_32 = + _bindgen_ty_32::lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_32 { + lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN = 5, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN: _bindgen_ty_33 = + _bindgen_ty_33::lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_33 { + lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN = 6, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN: _bindgen_ty_34 = + _bindgen_ty_34::lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_34 { + lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN = 7, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_DESTROY: _bindgen_ty_35 = + _bindgen_ty_35::lifecycle_msgs__msg__Transition__TRANSITION_DESTROY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_35 { + lifecycle_msgs__msg__Transition__TRANSITION_DESTROY = 8, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS: _bindgen_ty_36 = + _bindgen_ty_36::lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_36 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS = 10, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE: _bindgen_ty_37 = + _bindgen_ty_37::lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_37 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE = 11, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR: _bindgen_ty_38 = + _bindgen_ty_38::lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR = 12, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS: _bindgen_ty_39 = + _bindgen_ty_39::lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_39 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS = 20, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE: _bindgen_ty_40 = + _bindgen_ty_40::lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_40 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE = 21, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR: _bindgen_ty_41 = + _bindgen_ty_41::lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_41 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR = 22, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS: _bindgen_ty_42 = + _bindgen_ty_42::lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_42 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS = 30, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE: _bindgen_ty_43 = + _bindgen_ty_43::lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_43 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE = 31, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR: _bindgen_ty_44 = + _bindgen_ty_44::lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_44 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR = 32, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS: _bindgen_ty_45 = + _bindgen_ty_45::lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_45 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS = 40, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE: _bindgen_ty_46 = + _bindgen_ty_46::lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_46 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE = 41, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR: _bindgen_ty_47 = + _bindgen_ty_47::lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_47 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR = 42, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS: _bindgen_ty_48 = + _bindgen_ty_48::lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_48 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS = 50, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE: _bindgen_ty_49 = + _bindgen_ty_49::lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_49 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE = 51, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR: _bindgen_ty_50 = + _bindgen_ty_50::lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_50 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR = 52, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS: _bindgen_ty_51 = + _bindgen_ty_51::lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_51 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS = 60, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE: _bindgen_ty_52 = + _bindgen_ty_52::lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_52 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE = 61, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR: _bindgen_ty_53 = + _bindgen_ty_53::lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_53 { + lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR = 62, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS: _bindgen_ty_54 = + _bindgen_ty_54::lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_54 { + lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS = 97, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE: _bindgen_ty_55 = + _bindgen_ty_55::lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_55 { + lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE = 98, +} +pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR: _bindgen_ty_56 = + _bindgen_ty_56::lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_56 { + lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR = 99, +} +#[repr(C)] +pub struct lifecycle_msgs__msg__Transition { + pub id: u8, + pub label: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__Transition() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(lifecycle_msgs__msg__Transition)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lifecycle_msgs__msg__Transition)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__Transition), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__Transition), + "::", + stringify!(label) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__msg__Transition__Sequence { + pub data: *mut lifecycle_msgs__msg__Transition, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__Transition__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__Transition__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__Transition__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__Transition__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__Transition__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__Transition__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct lifecycle_msgs__msg__TransitionDescription { + pub transition: lifecycle_msgs__msg__Transition, + pub start_state: lifecycle_msgs__msg__State, + pub goal_state: lifecycle_msgs__msg__State, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__TransitionDescription() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__TransitionDescription) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__TransitionDescription) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transition) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription), + "::", + stringify!(transition) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).start_state) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription), + "::", + stringify!(start_state) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_state) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription), + "::", + stringify!(goal_state) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__msg__TransitionDescription__Sequence { + pub data: *mut lifecycle_msgs__msg__TransitionDescription, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__TransitionDescription__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__TransitionDescription__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__TransitionDescription__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionDescription__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct lifecycle_msgs__msg__TransitionEvent { + pub timestamp: u64, + pub transition: lifecycle_msgs__msg__Transition, + pub start_state: lifecycle_msgs__msg__State, + pub goal_state: lifecycle_msgs__msg__State, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__TransitionEvent() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__TransitionEvent) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__TransitionEvent) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transition) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent), + "::", + stringify!(transition) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).start_state) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent), + "::", + stringify!(start_state) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_state) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent), + "::", + stringify!(goal_state) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__msg__TransitionEvent__Sequence { + pub data: *mut lifecycle_msgs__msg__TransitionEvent, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__msg__TransitionEvent__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__msg__TransitionEvent__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__msg__TransitionEvent__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__msg__TransitionEvent__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct lifecycle_msgs__srv__ChangeState_Request { + pub transition: lifecycle_msgs__msg__Transition, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__ChangeState_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transition) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request), + "::", + stringify!(transition) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__ChangeState_Request__Sequence { + pub data: *mut lifecycle_msgs__srv__ChangeState_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__ChangeState_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__ChangeState_Response { + pub success: bool, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__ChangeState_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).success) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response), + "::", + stringify!(success) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__ChangeState_Response__Sequence { + pub data: *mut lifecycle_msgs__srv__ChangeState_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__ChangeState_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__ChangeState_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableStates_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableStates_Request__Sequence { + pub data: *mut lifecycle_msgs__srv__GetAvailableStates_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + lifecycle_msgs__srv__GetAvailableStates_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableStates_Response { + pub available_states: lifecycle_msgs__msg__State__Sequence, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).available_states) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response), + "::", + stringify!(available_states) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableStates_Response__Sequence { + pub data: *mut lifecycle_msgs__srv__GetAvailableStates_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + lifecycle_msgs__srv__GetAvailableStates_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableStates_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableTransitions_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence { + pub data: *mut lifecycle_msgs__srv__GetAvailableTransitions_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableTransitions_Response { + pub available_transitions: lifecycle_msgs__msg__TransitionDescription__Sequence, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).available_transitions) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response), + "::", + stringify!(available_transitions) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence { + pub data: *mut lifecycle_msgs__srv__GetAvailableTransitions_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetState_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetState_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetState_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetState_Request__Sequence { + pub data: *mut lifecycle_msgs__srv__GetState_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetState_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetState_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct lifecycle_msgs__srv__GetState_Response { + pub current_state: lifecycle_msgs__msg__State, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetState_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetState_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).current_state) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Response), + "::", + stringify!(current_state) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct lifecycle_msgs__srv__GetState_Response__Sequence { + pub data: *mut lifecycle_msgs__srv__GetState_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(lifecycle_msgs__srv__GetState_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(lifecycle_msgs__srv__GetState_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(lifecycle_msgs__srv__GetState_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__msg__GridCells { + pub header: std_msgs__msg__Header, + pub cell_width: f32, + pub cell_height: f32, + pub cells: geometry_msgs__msg__Point__Sequence, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__GridCells() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(nav_msgs__msg__GridCells)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__GridCells)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cell_width) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells), + "::", + stringify!(cell_width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cell_height) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells), + "::", + stringify!(cell_height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cells) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells), + "::", + stringify!(cells) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__GridCells__Sequence { + pub data: *mut nav_msgs__msg__GridCells, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__GridCells__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(nav_msgs__msg__GridCells__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__msg__GridCells__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__GridCells__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__MapMetaData { + pub map_load_time: builtin_interfaces__msg__Time, + pub resolution: f32, + pub width: u32, + pub height: u32, + pub origin: geometry_msgs__msg__Pose, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__MapMetaData() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(nav_msgs__msg__MapMetaData)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__MapMetaData)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).map_load_time) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData), + "::", + stringify!(map_load_time) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resolution) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData), + "::", + stringify!(resolution) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).origin) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData), + "::", + stringify!(origin) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__MapMetaData__Sequence { + pub data: *mut nav_msgs__msg__MapMetaData, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__MapMetaData__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__msg__MapMetaData__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__msg__MapMetaData__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__MapMetaData__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__msg__OccupancyGrid { + pub header: std_msgs__msg__Header, + pub info: nav_msgs__msg__MapMetaData, + pub data: rosidl_runtime_c__int8__Sequence, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__OccupancyGrid() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 136usize, + concat!("Size of: ", stringify!(nav_msgs__msg__OccupancyGrid)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__OccupancyGrid)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).info) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid), + "::", + stringify!(info) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__OccupancyGrid__Sequence { + pub data: *mut nav_msgs__msg__OccupancyGrid, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__OccupancyGrid__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__msg__OccupancyGrid__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__msg__OccupancyGrid__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__OccupancyGrid__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__msg__Odometry { + pub header: std_msgs__msg__Header, + pub child_frame_id: rosidl_runtime_c__String, + pub pose: geometry_msgs__msg__PoseWithCovariance, + pub twist: geometry_msgs__msg__TwistWithCovariance, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__Odometry() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 736usize, + concat!("Size of: ", stringify!(nav_msgs__msg__Odometry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__Odometry)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).child_frame_id) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry), + "::", + stringify!(child_frame_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).twist) as usize - ptr as usize }, + 400usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry), + "::", + stringify!(twist) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__Odometry__Sequence { + pub data: *mut nav_msgs__msg__Odometry, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__Odometry__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(nav_msgs__msg__Odometry__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__msg__Odometry__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Odometry__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__msg__Path { + pub header: std_msgs__msg__Header, + pub poses: geometry_msgs__msg__PoseStamped__Sequence, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__Path() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(nav_msgs__msg__Path)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__Path)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Path), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).poses) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Path), + "::", + stringify!(poses) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__msg__Path__Sequence { + pub data: *mut nav_msgs__msg__Path, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__msg__Path__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(nav_msgs__msg__Path__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__msg__Path__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Path__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Path__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__msg__Path__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__GetMap_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetMap_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(nav_msgs__srv__GetMap_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__GetMap_Request)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__GetMap_Request__Sequence { + pub data: *mut nav_msgs__srv__GetMap_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetMap_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__GetMap_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__GetMap_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__srv__GetMap_Response { + pub map: nav_msgs__msg__OccupancyGrid, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetMap_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 136usize, + concat!("Size of: ", stringify!(nav_msgs__srv__GetMap_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__GetMap_Response)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).map) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Response), + "::", + stringify!(map) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__GetMap_Response__Sequence { + pub data: *mut nav_msgs__srv__GetMap_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetMap_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__GetMap_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__GetMap_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetMap_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__srv__GetPlan_Request { + pub start: geometry_msgs__msg__PoseStamped, + pub goal: geometry_msgs__msg__PoseStamped, + pub tolerance: f32, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetPlan_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 184usize, + concat!("Size of: ", stringify!(nav_msgs__srv__GetPlan_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__GetPlan_Request)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request), + "::", + stringify!(start) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request), + "::", + stringify!(goal) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).tolerance) as usize - ptr as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request), + "::", + stringify!(tolerance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__GetPlan_Request__Sequence { + pub data: *mut nav_msgs__srv__GetPlan_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetPlan_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__GetPlan_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__GetPlan_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__srv__GetPlan_Response { + pub plan: nav_msgs__msg__Path, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetPlan_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(nav_msgs__srv__GetPlan_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__GetPlan_Response)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).plan) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Response), + "::", + stringify!(plan) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__GetPlan_Response__Sequence { + pub data: *mut nav_msgs__srv__GetPlan_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__GetPlan_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__GetPlan_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__GetPlan_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__GetPlan_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__srv__LoadMap_Request { + pub map_url: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__LoadMap_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(nav_msgs__srv__LoadMap_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__LoadMap_Request)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).map_url) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Request), + "::", + stringify!(map_url) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__LoadMap_Request__Sequence { + pub data: *mut nav_msgs__srv__LoadMap_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__LoadMap_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__LoadMap_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__LoadMap_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS: _bindgen_ty_57 = + _bindgen_ty_57::nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_57 { + nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS = 0, +} +pub const nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST: _bindgen_ty_58 = + _bindgen_ty_58::nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_58 { + nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST = 1, +} +pub const nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA: _bindgen_ty_59 = + _bindgen_ty_59::nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_59 { + nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA = 2, +} +pub const nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA: _bindgen_ty_60 = + _bindgen_ty_60::nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_60 { + nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA = 3, +} +pub const nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE: _bindgen_ty_61 = + _bindgen_ty_61::nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_61 { + nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE = 255, +} +#[repr(C)] +pub struct nav_msgs__srv__LoadMap_Response { + pub map: nav_msgs__msg__OccupancyGrid, + pub result: u8, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__LoadMap_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 144usize, + concat!("Size of: ", stringify!(nav_msgs__srv__LoadMap_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__LoadMap_Response)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).map) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Response), + "::", + stringify!(map) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__LoadMap_Response__Sequence { + pub data: *mut nav_msgs__srv__LoadMap_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__LoadMap_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__LoadMap_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__LoadMap_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__LoadMap_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct nav_msgs__srv__SetMap_Request { + pub map: nav_msgs__msg__OccupancyGrid, + pub initial_pose: geometry_msgs__msg__PoseWithCovarianceStamped, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__SetMap_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 512usize, + concat!("Size of: ", stringify!(nav_msgs__srv__SetMap_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__SetMap_Request)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).map) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Request), + "::", + stringify!(map) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).initial_pose) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Request), + "::", + stringify!(initial_pose) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__SetMap_Request__Sequence { + pub data: *mut nav_msgs__srv__SetMap_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__SetMap_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__SetMap_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__SetMap_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__SetMap_Response { + pub success: bool, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__SetMap_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(nav_msgs__srv__SetMap_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(nav_msgs__srv__SetMap_Response)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).success) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Response), + "::", + stringify!(success) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct nav_msgs__srv__SetMap_Response__Sequence { + pub data: *mut nav_msgs__srv__SetMap_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_nav_msgs__srv__SetMap_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(nav_msgs__srv__SetMap_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(nav_msgs__srv__SetMap_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nav_msgs__srv__SetMap_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__FloatingPointRange { + pub from_value: f64, + pub to_value: f64, + pub step: f64, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__FloatingPointRange() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__FloatingPointRange) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__FloatingPointRange) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).from_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange), + "::", + stringify!(from_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).to_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange), + "::", + stringify!(to_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).step) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange), + "::", + stringify!(step) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__FloatingPointRange__Sequence { + pub data: *mut rcl_interfaces__msg__FloatingPointRange, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__FloatingPointRange__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__FloatingPointRange__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__FloatingPointRange__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__FloatingPointRange__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__IntegerRange { + pub from_value: i64, + pub to_value: i64, + pub step: u64, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__IntegerRange() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__IntegerRange)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__IntegerRange) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).from_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange), + "::", + stringify!(from_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).to_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange), + "::", + stringify!(to_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).step) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange), + "::", + stringify!(step) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__IntegerRange__Sequence { + pub data: *mut rcl_interfaces__msg__IntegerRange, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__IntegerRange__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__IntegerRange__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__IntegerRange__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__IntegerRange__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__msg__ListParametersResult { + pub names: rosidl_runtime_c__String__Sequence, + pub prefixes: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ListParametersResult() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ListParametersResult) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ListParametersResult) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).names) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ListParametersResult), + "::", + stringify!(names) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).prefixes) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ListParametersResult), + "::", + stringify!(prefixes) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ListParametersResult__Sequence { + pub data: *mut rcl_interfaces__msg__ListParametersResult, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ListParametersResult__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ListParametersResult__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ListParametersResult__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ListParametersResult__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ListParametersResult__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ListParametersResult__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const rcl_interfaces__msg__Log__DEBUG: _bindgen_ty_62 = + _bindgen_ty_62::rcl_interfaces__msg__Log__DEBUG; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_62 { + rcl_interfaces__msg__Log__DEBUG = 10, +} +pub const rcl_interfaces__msg__Log__INFO: _bindgen_ty_63 = + _bindgen_ty_63::rcl_interfaces__msg__Log__INFO; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_63 { + rcl_interfaces__msg__Log__INFO = 20, +} +pub const rcl_interfaces__msg__Log__WARN: _bindgen_ty_64 = + _bindgen_ty_64::rcl_interfaces__msg__Log__WARN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_64 { + rcl_interfaces__msg__Log__WARN = 30, +} +pub const rcl_interfaces__msg__Log__ERROR: _bindgen_ty_65 = + _bindgen_ty_65::rcl_interfaces__msg__Log__ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_65 { + rcl_interfaces__msg__Log__ERROR = 40, +} +pub const rcl_interfaces__msg__Log__FATAL: _bindgen_ty_66 = + _bindgen_ty_66::rcl_interfaces__msg__Log__FATAL; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_66 { + rcl_interfaces__msg__Log__FATAL = 50, +} +#[repr(C)] +pub struct rcl_interfaces__msg__Log { + pub stamp: builtin_interfaces__msg__Time, + pub level: u8, + pub name: rosidl_runtime_c__String, + pub msg: rosidl_runtime_c__String, + pub file: rosidl_runtime_c__String, + pub function: rosidl_runtime_c__String, + pub line: u32, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__Log() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 120usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__Log)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(rcl_interfaces__msg__Log)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(stamp) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(level) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).msg) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(msg) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).file) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(file) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).function) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(function) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).line) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log), + "::", + stringify!(line) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__Log__Sequence { + pub data: *mut rcl_interfaces__msg__Log, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__Log__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__Log__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__Log__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Log__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__msg__ParameterValue { + pub type_: u8, + pub bool_value: bool, + pub integer_value: i64, + pub double_value: f64, + pub string_value: rosidl_runtime_c__String, + pub byte_array_value: rosidl_runtime_c__octet__Sequence, + pub bool_array_value: rosidl_runtime_c__boolean__Sequence, + pub integer_array_value: rosidl_runtime_c__int64__Sequence, + pub double_array_value: rosidl_runtime_c__double__Sequence, + pub string_array_value: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterValue() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 168usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__ParameterValue)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterValue) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_value) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(bool_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).integer_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(integer_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).double_value) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(double_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(string_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_array_value) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(byte_array_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_array_value) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(bool_array_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).integer_array_value) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(integer_array_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).double_array_value) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(double_array_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_array_value) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue), + "::", + stringify!(string_array_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterValue__Sequence { + pub data: *mut rcl_interfaces__msg__ParameterValue, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterValue__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterValue__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterValue__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterValue__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__msg__Parameter { + pub name: rosidl_runtime_c__String, + pub value: rcl_interfaces__msg__ParameterValue, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__Parameter() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 192usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__Parameter)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(rcl_interfaces__msg__Parameter)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Parameter), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Parameter), + "::", + stringify!(value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__Parameter__Sequence { + pub data: *mut rcl_interfaces__msg__Parameter, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__Parameter__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__Parameter__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__Parameter__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Parameter__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Parameter__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__Parameter__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE: _bindgen_ty_67 = + _bindgen_ty_67::rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_67 { + rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE = 1, +} +pub const rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE: _bindgen_ty_68 = + _bindgen_ty_68::rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_68 { + rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE = 1, +} +#[repr(C)] +pub struct rcl_interfaces__msg__ParameterDescriptor { + pub name: rosidl_runtime_c__String, + pub type_: u8, + pub description: rosidl_runtime_c__String, + pub additional_constraints: rosidl_runtime_c__String, + pub read_only: bool, + pub dynamic_typing: bool, + pub floating_point_range: rcl_interfaces__msg__FloatingPointRange__Sequence, + pub integer_range: rcl_interfaces__msg__IntegerRange__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterDescriptor() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 136usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterDescriptor) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(description) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).additional_constraints) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(additional_constraints) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).read_only) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(read_only) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dynamic_typing) as usize - ptr as usize }, + 81usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(dynamic_typing) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).floating_point_range) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(floating_point_range) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).integer_range) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor), + "::", + stringify!(integer_range) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterDescriptor__Sequence { + pub data: *mut rcl_interfaces__msg__ParameterDescriptor, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterDescriptor__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterDescriptor__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterDescriptor__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__msg__ParameterEvent { + pub stamp: builtin_interfaces__msg__Time, + pub node: rosidl_runtime_c__String, + pub new_parameters: rcl_interfaces__msg__Parameter__Sequence, + pub changed_parameters: rcl_interfaces__msg__Parameter__Sequence, + pub deleted_parameters: rcl_interfaces__msg__Parameter__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterEvent() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__ParameterEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterEvent) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent), + "::", + stringify!(stamp) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).node) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent), + "::", + stringify!(node) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).new_parameters) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent), + "::", + stringify!(new_parameters) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).changed_parameters) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent), + "::", + stringify!(changed_parameters) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).deleted_parameters) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent), + "::", + stringify!(deleted_parameters) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterEvent__Sequence { + pub data: *mut rcl_interfaces__msg__ParameterEvent, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterEvent__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterEvent__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterEvent__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEvent__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterEventDescriptors { + pub new_parameters: rcl_interfaces__msg__ParameterDescriptor__Sequence, + pub changed_parameters: rcl_interfaces__msg__ParameterDescriptor__Sequence, + pub deleted_parameters: rcl_interfaces__msg__ParameterDescriptor__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterEventDescriptors() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).new_parameters) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors), + "::", + stringify!(new_parameters) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).changed_parameters) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors), + "::", + stringify!(changed_parameters) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).deleted_parameters) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors), + "::", + stringify!(deleted_parameters) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterEventDescriptors__Sequence { + pub data: *mut rcl_interfaces__msg__ParameterEventDescriptors, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterEventDescriptors__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__msg__ParameterEventDescriptors__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterEventDescriptors__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET: _bindgen_ty_69 = + _bindgen_ty_69::rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_69 { + rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET = 0, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_BOOL: _bindgen_ty_70 = + _bindgen_ty_70::rcl_interfaces__msg__ParameterType__PARAMETER_BOOL; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_70 { + rcl_interfaces__msg__ParameterType__PARAMETER_BOOL = 1, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER: _bindgen_ty_71 = + _bindgen_ty_71::rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_71 { + rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER = 2, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE: _bindgen_ty_72 = + _bindgen_ty_72::rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_72 { + rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE = 3, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_STRING: _bindgen_ty_73 = + _bindgen_ty_73::rcl_interfaces__msg__ParameterType__PARAMETER_STRING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_73 { + rcl_interfaces__msg__ParameterType__PARAMETER_STRING = 4, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY: _bindgen_ty_74 = + _bindgen_ty_74::rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_74 { + rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY = 5, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY: _bindgen_ty_75 = + _bindgen_ty_75::rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_75 { + rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY = 6, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY: _bindgen_ty_76 = + _bindgen_ty_76::rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_76 { + rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY = 7, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY: _bindgen_ty_77 = + _bindgen_ty_77::rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_77 { + rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY = 8, +} +pub const rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY: _bindgen_ty_78 = + _bindgen_ty_78::rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_78 { + rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY = 9, +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterType { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterType() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(rcl_interfaces__msg__ParameterType)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterType) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterType), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__ParameterType__Sequence { + pub data: *mut rcl_interfaces__msg__ParameterType, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__ParameterType__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__ParameterType__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__ParameterType__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterType__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterType__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__ParameterType__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__msg__SetParametersResult { + pub successful: bool, + pub reason: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__SetParametersResult() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__SetParametersResult) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__SetParametersResult) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).successful) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__SetParametersResult), + "::", + stringify!(successful) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).reason) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__SetParametersResult), + "::", + stringify!(reason) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__msg__SetParametersResult__Sequence { + pub data: *mut rcl_interfaces__msg__SetParametersResult, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__msg__SetParametersResult__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__msg__SetParametersResult__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__msg__SetParametersResult__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__SetParametersResult__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__SetParametersResult__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__msg__SetParametersResult__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__DescribeParameters_Request { + pub names: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).names) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request), + "::", + stringify!(names) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__DescribeParameters_Request__Sequence { + pub data: *mut rcl_interfaces__srv__DescribeParameters_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__DescribeParameters_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__DescribeParameters_Response { + pub descriptors: rcl_interfaces__msg__ParameterDescriptor__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).descriptors) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response), + "::", + stringify!(descriptors) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__DescribeParameters_Response__Sequence { + pub data: *mut rcl_interfaces__srv__DescribeParameters_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__DescribeParameters_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__DescribeParameters_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__GetParameterTypes_Request { + pub names: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).names) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request), + "::", + stringify!(names) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__GetParameterTypes_Request__Sequence { + pub data: *mut rcl_interfaces__srv__GetParameterTypes_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__GetParameterTypes_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__GetParameterTypes_Response { + pub types: rosidl_runtime_c__uint8__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).types) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response), + "::", + stringify!(types) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__GetParameterTypes_Response__Sequence { + pub data: *mut rcl_interfaces__srv__GetParameterTypes_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__GetParameterTypes_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameterTypes_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__GetParameters_Request { + pub names: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameters_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameters_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).names) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Request), + "::", + stringify!(names) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__GetParameters_Request__Sequence { + pub data: *mut rcl_interfaces__srv__GetParameters_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameters_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameters_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__GetParameters_Response { + pub values: rcl_interfaces__msg__ParameterValue__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameters_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameters_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Response), + "::", + stringify!(values) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__GetParameters_Response__Sequence { + pub data: *mut rcl_interfaces__srv__GetParameters_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__GetParameters_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__GetParameters_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__GetParameters_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE: _bindgen_ty_79 = + _bindgen_ty_79::rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_79 { + rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE = 0, +} +#[repr(C)] +pub struct rcl_interfaces__srv__ListParameters_Request { + pub prefixes: rosidl_runtime_c__String__Sequence, + pub depth: u64, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__ListParameters_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__ListParameters_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).prefixes) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Request), + "::", + stringify!(prefixes) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).depth) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Request), + "::", + stringify!(depth) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__ListParameters_Request__Sequence { + pub data: *mut rcl_interfaces__srv__ListParameters_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__ListParameters_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__ListParameters_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__ListParameters_Response { + pub result: rcl_interfaces__msg__ListParametersResult, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__ListParameters_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__ListParameters_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__ListParameters_Response__Sequence { + pub data: *mut rcl_interfaces__srv__ListParameters_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__ListParameters_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__ListParameters_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__ListParameters_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParameters_Request { + pub parameters: rcl_interfaces__msg__Parameter__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParameters_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParameters_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Request), + "::", + stringify!(parameters) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParameters_Request__Sequence { + pub data: *mut rcl_interfaces__srv__SetParameters_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParameters_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParameters_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParameters_Response { + pub results: rcl_interfaces__msg__SetParametersResult__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParameters_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParameters_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).results) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Response), + "::", + stringify!(results) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParameters_Response__Sequence { + pub data: *mut rcl_interfaces__srv__SetParameters_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParameters_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParameters_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParameters_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParametersAtomically_Request { + pub parameters: rcl_interfaces__msg__Parameter__Sequence, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request), + "::", + stringify!(parameters) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParametersAtomically_Request__Sequence { + pub data: *mut rcl_interfaces__srv__SetParametersAtomically_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__SetParametersAtomically_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct rcl_interfaces__srv__SetParametersAtomically_Response { + pub result: rcl_interfaces__msg__SetParametersResult, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rcl_interfaces__srv__SetParametersAtomically_Response__Sequence { + pub data: *mut rcl_interfaces__srv__SetParametersAtomically_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + rcl_interfaces__srv__SetParametersAtomically_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rcl_interfaces__srv__SetParametersAtomically_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rosgraph_msgs__msg__Clock { + pub clock: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_rosgraph_msgs__msg__Clock() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(rosgraph_msgs__msg__Clock)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(rosgraph_msgs__msg__Clock)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rosgraph_msgs__msg__Clock), + "::", + stringify!(clock) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct rosgraph_msgs__msg__Clock__Sequence { + pub data: *mut rosgraph_msgs__msg__Clock, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_rosgraph_msgs__msg__Clock__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(rosgraph_msgs__msg__Clock__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(rosgraph_msgs__msg__Clock__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(rosgraph_msgs__msg__Clock__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(rosgraph_msgs__msg__Clock__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(rosgraph_msgs__msg__Clock__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN: _bindgen_ty_80 = + _bindgen_ty_80::sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_80 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN = 0, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING: _bindgen_ty_81 = + _bindgen_ty_81::sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_81 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING = 1, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING: _bindgen_ty_82 = + _bindgen_ty_82::sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_82 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING = 2, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING: _bindgen_ty_83 = + _bindgen_ty_83::sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_83 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING = 3, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL: _bindgen_ty_84 = + _bindgen_ty_84::sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_84 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL = 4, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN: _bindgen_ty_85 = + _bindgen_ty_85::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_85 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN = 0, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD: _bindgen_ty_86 = + _bindgen_ty_86::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_86 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD = 1, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT: _bindgen_ty_87 = + _bindgen_ty_87::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_87 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT = 2, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD: _bindgen_ty_88 = + _bindgen_ty_88::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_88 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD = 3, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE: _bindgen_ty_89 = + _bindgen_ty_89::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_89 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE: _bindgen_ty_90 = + _bindgen_ty_90::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_90 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD: _bindgen_ty_91 = + _bindgen_ty_91::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_91 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD = 6, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE: + _bindgen_ty_92 = + _bindgen_ty_92::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_92 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE: _bindgen_ty_93 = + _bindgen_ty_93::sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_93 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN: _bindgen_ty_94 = + _bindgen_ty_94::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_94 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH: _bindgen_ty_95 = + _bindgen_ty_95::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_95 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH = 1, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION: _bindgen_ty_96 = + _bindgen_ty_96::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_96 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION = 2, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO: _bindgen_ty_97 = + _bindgen_ty_97::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_97 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO = 3, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE: _bindgen_ty_98 = + _bindgen_ty_98::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_98 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE = 4, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD: _bindgen_ty_99 = + _bindgen_ty_99::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_99 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD = 5, +} +pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN: _bindgen_ty_100 = + _bindgen_ty_100::sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_100 { + sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN = 6, +} +#[repr(C)] +pub struct sensor_msgs__msg__BatteryState { + pub header: std_msgs__msg__Header, + pub voltage: f32, + pub temperature: f32, + pub current: f32, + pub charge: f32, + pub capacity: f32, + pub design_capacity: f32, + pub percentage: f32, + pub power_supply_status: u8, + pub power_supply_health: u8, + pub power_supply_technology: u8, + pub present: bool, + pub cell_voltage: rosidl_runtime_c__float__Sequence, + pub cell_temperature: rosidl_runtime_c__float__Sequence, + pub location: rosidl_runtime_c__String, + pub serial_number: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__BatteryState() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 160usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__BatteryState)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__BatteryState)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).voltage) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(voltage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).temperature) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).current) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(current) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).charge) as usize - ptr as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(charge) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(capacity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).design_capacity) as usize - ptr as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(design_capacity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).percentage) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(percentage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).power_supply_status) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(power_supply_status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).power_supply_health) as usize - ptr as usize }, + 61usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(power_supply_health) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).power_supply_technology) as usize - ptr as usize }, + 62usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(power_supply_technology) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).present) as usize - ptr as usize }, + 63usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(present) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cell_voltage) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(cell_voltage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cell_temperature) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(cell_temperature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).location) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(location) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).serial_number) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState), + "::", + stringify!(serial_number) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__BatteryState__Sequence { + pub data: *mut sensor_msgs__msg__BatteryState, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__BatteryState__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__BatteryState__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__BatteryState__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__BatteryState__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__RegionOfInterest { + pub x_offset: u32, + pub y_offset: u32, + pub height: u32, + pub width: u32, + pub do_rectify: bool, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__RegionOfInterest() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__RegionOfInterest)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__RegionOfInterest) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x_offset) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest), + "::", + stringify!(x_offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).y_offset) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest), + "::", + stringify!(y_offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).do_rectify) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest), + "::", + stringify!(do_rectify) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__RegionOfInterest__Sequence { + pub data: *mut sensor_msgs__msg__RegionOfInterest, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__RegionOfInterest__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__RegionOfInterest__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__RegionOfInterest__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RegionOfInterest__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__CameraInfo { + pub header: std_msgs__msg__Header, + pub height: u32, + pub width: u32, + pub distortion_model: rosidl_runtime_c__String, + pub d: rosidl_runtime_c__double__Sequence, + pub k: [f64; 9usize], + pub r: [f64; 9usize], + pub p: [f64; 12usize], + pub binning_x: u32, + pub binning_y: u32, + pub roi: sensor_msgs__msg__RegionOfInterest, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__CameraInfo() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 360usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__CameraInfo)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__CameraInfo)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).distortion_model) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(distortion_model) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).d) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(d) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).k) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(k) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).r) as usize - ptr as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(r) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize }, + 232usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(p) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).binning_x) as usize - ptr as usize }, + 328usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(binning_x) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).binning_y) as usize - ptr as usize }, + 332usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(binning_y) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).roi) as usize - ptr as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo), + "::", + stringify!(roi) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__CameraInfo__Sequence { + pub data: *mut sensor_msgs__msg__CameraInfo, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__CameraInfo__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__CameraInfo__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__CameraInfo__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CameraInfo__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__ChannelFloat32 { + pub name: rosidl_runtime_c__String, + pub values: rosidl_runtime_c__float__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__ChannelFloat32() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__ChannelFloat32)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__ChannelFloat32) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__ChannelFloat32), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__ChannelFloat32), + "::", + stringify!(values) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__ChannelFloat32__Sequence { + pub data: *mut sensor_msgs__msg__ChannelFloat32, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__ChannelFloat32__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__ChannelFloat32__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__ChannelFloat32__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__ChannelFloat32__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__ChannelFloat32__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__ChannelFloat32__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__CompressedImage { + pub header: std_msgs__msg__Header, + pub format: rosidl_runtime_c__String, + pub data: rosidl_runtime_c__uint8__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__CompressedImage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__CompressedImage)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__CompressedImage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).format) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__CompressedImage__Sequence { + pub data: *mut sensor_msgs__msg__CompressedImage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__CompressedImage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__CompressedImage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__CompressedImage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__CompressedImage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__FluidPressure { + pub header: std_msgs__msg__Header, + pub fluid_pressure: f64, + pub variance: f64, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__FluidPressure() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__FluidPressure)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__FluidPressure)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fluid_pressure) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure), + "::", + stringify!(fluid_pressure) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).variance) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure), + "::", + stringify!(variance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__FluidPressure__Sequence { + pub data: *mut sensor_msgs__msg__FluidPressure, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__FluidPressure__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__FluidPressure__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__FluidPressure__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__FluidPressure__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__Illuminance { + pub header: std_msgs__msg__Header, + pub illuminance: f64, + pub variance: f64, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Illuminance() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Illuminance)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Illuminance)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).illuminance) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance), + "::", + stringify!(illuminance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).variance) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance), + "::", + stringify!(variance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Illuminance__Sequence { + pub data: *mut sensor_msgs__msg__Illuminance, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Illuminance__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__Illuminance__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__Illuminance__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Illuminance__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__Image { + pub header: std_msgs__msg__Header, + pub height: u32, + pub width: u32, + pub encoding: rosidl_runtime_c__String, + pub is_bigendian: u8, + pub step: u32, + pub data: rosidl_runtime_c__uint8__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Image() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Image)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Image)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).encoding) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(encoding) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).is_bigendian) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(is_bigendian) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).step) as usize - ptr as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(step) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Image__Sequence { + pub data: *mut sensor_msgs__msg__Image, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Image__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Image__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__Image__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Image__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__Imu { + pub header: std_msgs__msg__Header, + pub orientation: geometry_msgs__msg__Quaternion, + pub orientation_covariance: [f64; 9usize], + pub angular_velocity: geometry_msgs__msg__Vector3, + pub angular_velocity_covariance: [f64; 9usize], + pub linear_acceleration: geometry_msgs__msg__Vector3, + pub linear_acceleration_covariance: [f64; 9usize], +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Imu() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 328usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Imu)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Imu)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).orientation) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(orientation) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).orientation_covariance) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(orientation_covariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angular_velocity) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(angular_velocity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angular_velocity_covariance) as usize - ptr as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(angular_velocity_covariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).linear_acceleration) as usize - ptr as usize }, + 232usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(linear_acceleration) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).linear_acceleration_covariance) as usize - ptr as usize + }, + 256usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu), + "::", + stringify!(linear_acceleration_covariance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Imu__Sequence { + pub data: *mut sensor_msgs__msg__Imu, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Imu__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Imu__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Imu__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Imu__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__JointState { + pub header: std_msgs__msg__Header, + pub name: rosidl_runtime_c__String__Sequence, + pub position: rosidl_runtime_c__double__Sequence, + pub velocity: rosidl_runtime_c__double__Sequence, + pub effort: rosidl_runtime_c__double__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JointState() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__JointState)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__JointState)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).position) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState), + "::", + stringify!(position) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).velocity) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState), + "::", + stringify!(velocity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).effort) as usize - ptr as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState), + "::", + stringify!(effort) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__JointState__Sequence { + pub data: *mut sensor_msgs__msg__JointState, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JointState__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__JointState__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__JointState__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JointState__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__Joy { + pub header: std_msgs__msg__Header, + pub axes: rosidl_runtime_c__float__Sequence, + pub buttons: rosidl_runtime_c__int32__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Joy() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Joy)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Joy)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).axes) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy), + "::", + stringify!(axes) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).buttons) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy), + "::", + stringify!(buttons) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Joy__Sequence { + pub data: *mut sensor_msgs__msg__Joy, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Joy__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Joy__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Joy__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Joy__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const sensor_msgs__msg__JoyFeedback__TYPE_LED: _bindgen_ty_101 = + _bindgen_ty_101::sensor_msgs__msg__JoyFeedback__TYPE_LED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_101 { + sensor_msgs__msg__JoyFeedback__TYPE_LED = 0, +} +pub const sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE: _bindgen_ty_102 = + _bindgen_ty_102::sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_102 { + sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE = 1, +} +pub const sensor_msgs__msg__JoyFeedback__TYPE_BUZZER: _bindgen_ty_103 = + _bindgen_ty_103::sensor_msgs__msg__JoyFeedback__TYPE_BUZZER; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_103 { + sensor_msgs__msg__JoyFeedback__TYPE_BUZZER = 2, +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__JoyFeedback { + pub type_: u8, + pub id: u8, + pub intensity: f32, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JoyFeedback() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__JoyFeedback)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__JoyFeedback)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).intensity) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback), + "::", + stringify!(intensity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__JoyFeedback__Sequence { + pub data: *mut sensor_msgs__msg__JoyFeedback, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JoyFeedback__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__JoyFeedback__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__JoyFeedback__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedback__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__JoyFeedbackArray { + pub array: sensor_msgs__msg__JoyFeedback__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JoyFeedbackArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__JoyFeedbackArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__JoyFeedbackArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedbackArray), + "::", + stringify!(array) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__JoyFeedbackArray__Sequence { + pub data: *mut sensor_msgs__msg__JoyFeedbackArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__JoyFeedbackArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__JoyFeedbackArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__JoyFeedbackArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedbackArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedbackArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__JoyFeedbackArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__LaserEcho { + pub echoes: rosidl_runtime_c__float__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__LaserEcho() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__LaserEcho)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__LaserEcho)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).echoes) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserEcho), + "::", + stringify!(echoes) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__LaserEcho__Sequence { + pub data: *mut sensor_msgs__msg__LaserEcho, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__LaserEcho__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__LaserEcho__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__LaserEcho__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserEcho__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserEcho__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserEcho__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__LaserScan { + pub header: std_msgs__msg__Header, + pub angle_min: f32, + pub angle_max: f32, + pub angle_increment: f32, + pub time_increment: f32, + pub scan_time: f32, + pub range_min: f32, + pub range_max: f32, + pub ranges: rosidl_runtime_c__float__Sequence, + pub intensities: rosidl_runtime_c__float__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__LaserScan() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__LaserScan)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__LaserScan)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_min) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(angle_min) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_max) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(angle_max) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_increment) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(angle_increment) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_increment) as usize - ptr as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(time_increment) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).scan_time) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(scan_time) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).range_min) as usize - ptr as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(range_min) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).range_max) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(range_max) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ranges) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(ranges) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).intensities) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan), + "::", + stringify!(intensities) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__LaserScan__Sequence { + pub data: *mut sensor_msgs__msg__LaserScan, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__LaserScan__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__LaserScan__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__LaserScan__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__LaserScan__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__MagneticField { + pub header: std_msgs__msg__Header, + pub magnetic_field: geometry_msgs__msg__Vector3, + pub magnetic_field_covariance: [f64; 9usize], +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MagneticField() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__MagneticField)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__MagneticField)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).magnetic_field) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField), + "::", + stringify!(magnetic_field) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).magnetic_field_covariance) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField), + "::", + stringify!(magnetic_field_covariance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__MagneticField__Sequence { + pub data: *mut sensor_msgs__msg__MagneticField, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MagneticField__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__MagneticField__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__MagneticField__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MagneticField__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__MultiDOFJointState { + pub header: std_msgs__msg__Header, + pub joint_names: rosidl_runtime_c__String__Sequence, + pub transforms: geometry_msgs__msg__Transform__Sequence, + pub twist: geometry_msgs__msg__Twist__Sequence, + pub wrench: geometry_msgs__msg__Wrench__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MultiDOFJointState() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__MultiDOFJointState) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__MultiDOFJointState) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).joint_names) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState), + "::", + stringify!(joint_names) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transforms) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState), + "::", + stringify!(transforms) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).twist) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState), + "::", + stringify!(twist) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wrench) as usize - ptr as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState), + "::", + stringify!(wrench) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__MultiDOFJointState__Sequence { + pub data: *mut sensor_msgs__msg__MultiDOFJointState, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MultiDOFJointState__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__MultiDOFJointState__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__MultiDOFJointState__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiDOFJointState__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__MultiEchoLaserScan { + pub header: std_msgs__msg__Header, + pub angle_min: f32, + pub angle_max: f32, + pub angle_increment: f32, + pub time_increment: f32, + pub scan_time: f32, + pub range_min: f32, + pub range_max: f32, + pub ranges: sensor_msgs__msg__LaserEcho__Sequence, + pub intensities: sensor_msgs__msg__LaserEcho__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MultiEchoLaserScan() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_min) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(angle_min) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_max) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(angle_max) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).angle_increment) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(angle_increment) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_increment) as usize - ptr as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(time_increment) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).scan_time) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(scan_time) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).range_min) as usize - ptr as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(range_min) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).range_max) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(range_max) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ranges) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(ranges) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).intensities) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan), + "::", + stringify!(intensities) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__MultiEchoLaserScan__Sequence { + pub data: *mut sensor_msgs__msg__MultiEchoLaserScan, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__MultiEchoLaserScan__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__MultiEchoLaserScan__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN: _bindgen_ty_104 = + _bindgen_ty_104::sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_104 { + sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN = 0, +} +pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED: _bindgen_ty_105 = + _bindgen_ty_105::sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_105 { + sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED = 1, +} +pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN: _bindgen_ty_106 = + _bindgen_ty_106::sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_106 { + sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN = 2, +} +pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN: _bindgen_ty_107 = + _bindgen_ty_107::sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_107 { + sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN = 3, +} +pub const sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX: _bindgen_ty_108 = + _bindgen_ty_108::sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX; +#[repr(i32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_108 { + sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX = -1, +} +pub const sensor_msgs__msg__NavSatStatus__STATUS_FIX: _bindgen_ty_109 = + _bindgen_ty_109::sensor_msgs__msg__NavSatStatus__STATUS_FIX; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_109 { + sensor_msgs__msg__NavSatStatus__STATUS_FIX = 0, +} +pub const sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX: _bindgen_ty_110 = + _bindgen_ty_110::sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_110 { + sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX = 1, +} +pub const sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX: _bindgen_ty_111 = + _bindgen_ty_111::sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_111 { + sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX = 2, +} +pub const sensor_msgs__msg__NavSatStatus__SERVICE_GPS: _bindgen_ty_112 = + _bindgen_ty_112::sensor_msgs__msg__NavSatStatus__SERVICE_GPS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_112 { + sensor_msgs__msg__NavSatStatus__SERVICE_GPS = 1, +} +pub const sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS: _bindgen_ty_113 = + _bindgen_ty_113::sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_113 { + sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS = 2, +} +pub const sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS: _bindgen_ty_114 = + _bindgen_ty_114::sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_114 { + sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS = 4, +} +pub const sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO: _bindgen_ty_115 = + _bindgen_ty_115::sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_115 { + sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO = 8, +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__NavSatStatus { + pub status: i8, + pub service: u16, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__NavSatStatus() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__NavSatStatus)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__NavSatStatus)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatStatus), + "::", + stringify!(status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).service) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatStatus), + "::", + stringify!(service) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__NavSatStatus__Sequence { + pub data: *mut sensor_msgs__msg__NavSatStatus, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__NavSatStatus__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__NavSatStatus__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__NavSatStatus__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatStatus__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatStatus__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatStatus__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__NavSatFix { + pub header: std_msgs__msg__Header, + pub status: sensor_msgs__msg__NavSatStatus, + pub latitude: f64, + pub longitude: f64, + pub altitude: f64, + pub position_covariance: [f64; 9usize], + pub position_covariance_type: u8, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__NavSatFix() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 144usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__NavSatFix)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__NavSatFix)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).latitude) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(latitude) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).longitude) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(longitude) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).altitude) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(altitude) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).position_covariance) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(position_covariance) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).position_covariance_type) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix), + "::", + stringify!(position_covariance_type) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__NavSatFix__Sequence { + pub data: *mut sensor_msgs__msg__NavSatFix, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__NavSatFix__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__NavSatFix__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__NavSatFix__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__NavSatFix__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__PointCloud { + pub header: std_msgs__msg__Header, + pub points: geometry_msgs__msg__Point32__Sequence, + pub channels: sensor_msgs__msg__ChannelFloat32__Sequence, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointCloud() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__PointCloud)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__PointCloud)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud), + "::", + stringify!(points) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).channels) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud), + "::", + stringify!(channels) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__PointCloud__Sequence { + pub data: *mut sensor_msgs__msg__PointCloud, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointCloud__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__PointCloud__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__PointCloud__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const sensor_msgs__msg__PointField__INT8: _bindgen_ty_116 = + _bindgen_ty_116::sensor_msgs__msg__PointField__INT8; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_116 { + sensor_msgs__msg__PointField__INT8 = 1, +} +pub const sensor_msgs__msg__PointField__UINT8: _bindgen_ty_117 = + _bindgen_ty_117::sensor_msgs__msg__PointField__UINT8; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_117 { + sensor_msgs__msg__PointField__UINT8 = 2, +} +pub const sensor_msgs__msg__PointField__INT16: _bindgen_ty_118 = + _bindgen_ty_118::sensor_msgs__msg__PointField__INT16; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_118 { + sensor_msgs__msg__PointField__INT16 = 3, +} +pub const sensor_msgs__msg__PointField__UINT16: _bindgen_ty_119 = + _bindgen_ty_119::sensor_msgs__msg__PointField__UINT16; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_119 { + sensor_msgs__msg__PointField__UINT16 = 4, +} +pub const sensor_msgs__msg__PointField__INT32: _bindgen_ty_120 = + _bindgen_ty_120::sensor_msgs__msg__PointField__INT32; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_120 { + sensor_msgs__msg__PointField__INT32 = 5, +} +pub const sensor_msgs__msg__PointField__UINT32: _bindgen_ty_121 = + _bindgen_ty_121::sensor_msgs__msg__PointField__UINT32; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_121 { + sensor_msgs__msg__PointField__UINT32 = 6, +} +pub const sensor_msgs__msg__PointField__FLOAT32: _bindgen_ty_122 = + _bindgen_ty_122::sensor_msgs__msg__PointField__FLOAT32; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_122 { + sensor_msgs__msg__PointField__FLOAT32 = 7, +} +pub const sensor_msgs__msg__PointField__FLOAT64: _bindgen_ty_123 = + _bindgen_ty_123::sensor_msgs__msg__PointField__FLOAT64; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_123 { + sensor_msgs__msg__PointField__FLOAT64 = 8, +} +#[repr(C)] +pub struct sensor_msgs__msg__PointField { + pub name: rosidl_runtime_c__String, + pub offset: u32, + pub datatype: u8, + pub count: u32, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointField() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__PointField)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__PointField)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField), + "::", + stringify!(offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).datatype) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField), + "::", + stringify!(datatype) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField), + "::", + stringify!(count) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__PointField__Sequence { + pub data: *mut sensor_msgs__msg__PointField, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointField__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__PointField__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__PointField__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointField__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__PointCloud2 { + pub header: std_msgs__msg__Header, + pub height: u32, + pub width: u32, + pub fields: sensor_msgs__msg__PointField__Sequence, + pub is_bigendian: bool, + pub point_step: u32, + pub row_step: u32, + pub data: rosidl_runtime_c__uint8__Sequence, + pub is_dense: bool, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointCloud2() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__PointCloud2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__PointCloud2)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fields) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(fields) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).is_bigendian) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(is_bigendian) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).point_step) as usize - ptr as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(point_step) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).row_step) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(row_step) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).is_dense) as usize - ptr as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2), + "::", + stringify!(is_dense) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__PointCloud2__Sequence { + pub data: *mut sensor_msgs__msg__PointCloud2, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__PointCloud2__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__PointCloud2__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__PointCloud2__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__PointCloud2__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const sensor_msgs__msg__Range__ULTRASOUND: _bindgen_ty_124 = + _bindgen_ty_124::sensor_msgs__msg__Range__ULTRASOUND; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_124 { + sensor_msgs__msg__Range__ULTRASOUND = 0, +} +pub const sensor_msgs__msg__Range__INFRARED: _bindgen_ty_125 = + _bindgen_ty_125::sensor_msgs__msg__Range__INFRARED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_125 { + sensor_msgs__msg__Range__INFRARED = 1, +} +#[repr(C)] +pub struct sensor_msgs__msg__Range { + pub header: std_msgs__msg__Header, + pub radiation_type: u8, + pub field_of_view: f32, + pub min_range: f32, + pub max_range: f32, + pub range: f32, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Range() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Range)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Range)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).radiation_type) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(radiation_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).field_of_view) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(field_of_view) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).min_range) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(min_range) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).max_range) as usize - ptr as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(max_range) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range), + "::", + stringify!(range) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Range__Sequence { + pub data: *mut sensor_msgs__msg__Range, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Range__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Range__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__Range__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Range__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__RelativeHumidity { + pub header: std_msgs__msg__Header, + pub relative_humidity: f64, + pub variance: f64, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__RelativeHumidity() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__RelativeHumidity)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__RelativeHumidity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).relative_humidity) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity), + "::", + stringify!(relative_humidity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).variance) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity), + "::", + stringify!(variance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__RelativeHumidity__Sequence { + pub data: *mut sensor_msgs__msg__RelativeHumidity, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__RelativeHumidity__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__RelativeHumidity__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__RelativeHumidity__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__RelativeHumidity__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__Temperature { + pub header: std_msgs__msg__Header, + pub temperature: f64, + pub variance: f64, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Temperature() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__Temperature)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__Temperature)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).temperature) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature), + "::", + stringify!(temperature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).variance) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature), + "::", + stringify!(variance) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__Temperature__Sequence { + pub data: *mut sensor_msgs__msg__Temperature, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__Temperature__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__Temperature__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__Temperature__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__Temperature__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__msg__TimeReference { + pub header: std_msgs__msg__Header, + pub time_ref: builtin_interfaces__msg__Time, + pub source: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__TimeReference() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(sensor_msgs__msg__TimeReference)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(sensor_msgs__msg__TimeReference)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_ref) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference), + "::", + stringify!(time_ref) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).source) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference), + "::", + stringify!(source) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__msg__TimeReference__Sequence { + pub data: *mut sensor_msgs__msg__TimeReference, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__msg__TimeReference__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__msg__TimeReference__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__msg__TimeReference__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__msg__TimeReference__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__srv__SetCameraInfo_Request { + pub camera_info: sensor_msgs__msg__CameraInfo, +} +#[test] +fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 360usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).camera_info) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request), + "::", + stringify!(camera_info) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__srv__SetCameraInfo_Request__Sequence { + pub data: *mut sensor_msgs__srv__SetCameraInfo_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct sensor_msgs__srv__SetCameraInfo_Response { + pub success: bool, + pub status_message: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).success) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response), + "::", + stringify!(success) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status_message) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response), + "::", + stringify!(status_message) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct sensor_msgs__srv__SetCameraInfo_Response__Sequence { + pub data: *mut sensor_msgs__srv__SetCameraInfo_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(sensor_msgs__srv__SetCameraInfo_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__MeshTriangle { + pub vertex_indices: [u32; 3usize], +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__MeshTriangle() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(shape_msgs__msg__MeshTriangle)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(shape_msgs__msg__MeshTriangle)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).vertex_indices) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__MeshTriangle), + "::", + stringify!(vertex_indices) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__MeshTriangle__Sequence { + pub data: *mut shape_msgs__msg__MeshTriangle, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__MeshTriangle__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(shape_msgs__msg__MeshTriangle__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(shape_msgs__msg__MeshTriangle__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__MeshTriangle__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__MeshTriangle__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__MeshTriangle__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__Mesh { + pub triangles: shape_msgs__msg__MeshTriangle__Sequence, + pub vertices: geometry_msgs__msg__Point__Sequence, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__Mesh() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(shape_msgs__msg__Mesh)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(shape_msgs__msg__Mesh)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).triangles) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Mesh), + "::", + stringify!(triangles) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).vertices) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Mesh), + "::", + stringify!(vertices) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__Mesh__Sequence { + pub data: *mut shape_msgs__msg__Mesh, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__Mesh__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(shape_msgs__msg__Mesh__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(shape_msgs__msg__Mesh__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Mesh__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Mesh__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Mesh__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__Plane { + pub coef: [f64; 4usize], +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__Plane() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(shape_msgs__msg__Plane)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(shape_msgs__msg__Plane)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).coef) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Plane), + "::", + stringify!(coef) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__Plane__Sequence { + pub data: *mut shape_msgs__msg__Plane, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__Plane__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(shape_msgs__msg__Plane__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(shape_msgs__msg__Plane__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Plane__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Plane__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__Plane__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const shape_msgs__msg__SolidPrimitive__BOX: _bindgen_ty_126 = + _bindgen_ty_126::shape_msgs__msg__SolidPrimitive__BOX; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_126 { + shape_msgs__msg__SolidPrimitive__BOX = 1, +} +pub const shape_msgs__msg__SolidPrimitive__SPHERE: _bindgen_ty_127 = + _bindgen_ty_127::shape_msgs__msg__SolidPrimitive__SPHERE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_127 { + shape_msgs__msg__SolidPrimitive__SPHERE = 2, +} +pub const shape_msgs__msg__SolidPrimitive__CYLINDER: _bindgen_ty_128 = + _bindgen_ty_128::shape_msgs__msg__SolidPrimitive__CYLINDER; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_128 { + shape_msgs__msg__SolidPrimitive__CYLINDER = 3, +} +pub const shape_msgs__msg__SolidPrimitive__CONE: _bindgen_ty_129 = + _bindgen_ty_129::shape_msgs__msg__SolidPrimitive__CONE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_129 { + shape_msgs__msg__SolidPrimitive__CONE = 4, +} +pub const shape_msgs__msg__SolidPrimitive__PRISM: _bindgen_ty_130 = + _bindgen_ty_130::shape_msgs__msg__SolidPrimitive__PRISM; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_130 { + shape_msgs__msg__SolidPrimitive__PRISM = 5, +} +pub const shape_msgs__msg__SolidPrimitive__BOX_X: _bindgen_ty_131 = + _bindgen_ty_131::shape_msgs__msg__SolidPrimitive__BOX_X; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_131 { + shape_msgs__msg__SolidPrimitive__BOX_X = 0, +} +pub const shape_msgs__msg__SolidPrimitive__BOX_Y: _bindgen_ty_132 = + _bindgen_ty_132::shape_msgs__msg__SolidPrimitive__BOX_Y; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_132 { + shape_msgs__msg__SolidPrimitive__BOX_Y = 1, +} +pub const shape_msgs__msg__SolidPrimitive__BOX_Z: _bindgen_ty_133 = + _bindgen_ty_133::shape_msgs__msg__SolidPrimitive__BOX_Z; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_133 { + shape_msgs__msg__SolidPrimitive__BOX_Z = 2, +} +pub const shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS: _bindgen_ty_134 = + _bindgen_ty_134::shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_134 { + shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS = 0, +} +pub const shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT: _bindgen_ty_135 = + _bindgen_ty_135::shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_135 { + shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT = 0, +} +pub const shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS: _bindgen_ty_136 = + _bindgen_ty_136::shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_136 { + shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS = 1, +} +pub const shape_msgs__msg__SolidPrimitive__CONE_HEIGHT: _bindgen_ty_137 = + _bindgen_ty_137::shape_msgs__msg__SolidPrimitive__CONE_HEIGHT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_137 { + shape_msgs__msg__SolidPrimitive__CONE_HEIGHT = 0, +} +pub const shape_msgs__msg__SolidPrimitive__CONE_RADIUS: _bindgen_ty_138 = + _bindgen_ty_138::shape_msgs__msg__SolidPrimitive__CONE_RADIUS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_138 { + shape_msgs__msg__SolidPrimitive__CONE_RADIUS = 1, +} +pub const shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT: _bindgen_ty_139 = + _bindgen_ty_139::shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_139 { + shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT = 0, +} +pub const shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE: _bindgen_ty_140 = + _bindgen_ty_140::shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_140 { + shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE = 3, +} +#[repr(C)] +pub struct shape_msgs__msg__SolidPrimitive { + pub type_: u8, + pub dimensions: rosidl_runtime_c__double__Sequence, + pub polygon: geometry_msgs__msg__Polygon, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__SolidPrimitive() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(shape_msgs__msg__SolidPrimitive)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(shape_msgs__msg__SolidPrimitive)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dimensions) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive), + "::", + stringify!(dimensions) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).polygon) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive), + "::", + stringify!(polygon) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct shape_msgs__msg__SolidPrimitive__Sequence { + pub data: *mut shape_msgs__msg__SolidPrimitive, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_shape_msgs__msg__SolidPrimitive__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(shape_msgs__msg__SolidPrimitive__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(shape_msgs__msg__SolidPrimitive__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(shape_msgs__msg__SolidPrimitive__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct statistics_msgs__msg__StatisticDataPoint { + pub data_type: u8, + pub data: f64, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__StatisticDataPoint() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__StatisticDataPoint) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__StatisticDataPoint) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data_type) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataPoint), + "::", + stringify!(data_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataPoint), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct statistics_msgs__msg__StatisticDataPoint__Sequence { + pub data: *mut statistics_msgs__msg__StatisticDataPoint, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__StatisticDataPoint__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__StatisticDataPoint__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__StatisticDataPoint__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataPoint__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataPoint__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataPoint__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct statistics_msgs__msg__MetricsMessage { + pub measurement_source_name: rosidl_runtime_c__String, + pub metrics_source: rosidl_runtime_c__String, + pub unit: rosidl_runtime_c__String, + pub window_start: builtin_interfaces__msg__Time, + pub window_stop: builtin_interfaces__msg__Time, + pub statistics: statistics_msgs__msg__StatisticDataPoint__Sequence, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__MetricsMessage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__MetricsMessage) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__MetricsMessage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).measurement_source_name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(measurement_source_name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).metrics_source) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(metrics_source) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).unit) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(unit) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).window_start) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(window_start) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).window_stop) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(window_stop) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).statistics) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage), + "::", + stringify!(statistics) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct statistics_msgs__msg__MetricsMessage__Sequence { + pub data: *mut statistics_msgs__msg__MetricsMessage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__MetricsMessage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__MetricsMessage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__MetricsMessage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__MetricsMessage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED: + _bindgen_ty_141 = + _bindgen_ty_141::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_141 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED = 0, +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE: _bindgen_ty_142 = + _bindgen_ty_142::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_142 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE = 1, +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM: _bindgen_ty_143 = + _bindgen_ty_143::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_143 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM = 2, +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM: _bindgen_ty_144 = + _bindgen_ty_144::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_144 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM = 3, +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV: _bindgen_ty_145 = + _bindgen_ty_145::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_145 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV = 4, +} +pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT: + _bindgen_ty_146 = + _bindgen_ty_146::statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_146 { + statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT = 5, +} +#[repr(C)] +#[derive(Debug)] +pub struct statistics_msgs__msg__StatisticDataType { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__StatisticDataType() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__StatisticDataType) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__StatisticDataType) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataType), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct statistics_msgs__msg__StatisticDataType__Sequence { + pub data: *mut statistics_msgs__msg__StatisticDataType, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_statistics_msgs__msg__StatisticDataType__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(statistics_msgs__msg__StatisticDataType__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(statistics_msgs__msg__StatisticDataType__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataType__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataType__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(statistics_msgs__msg__StatisticDataType__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Bool { + pub data: bool, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Bool() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__Bool)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Bool)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Bool), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Bool__Sequence { + pub data: *mut std_msgs__msg__Bool, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Bool__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Bool__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Bool__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Bool__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Bool__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Bool__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Byte { + pub data: u8, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Byte() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__Byte)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Byte)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Byte), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Byte__Sequence { + pub data: *mut std_msgs__msg__Byte, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Byte__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Byte__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Byte__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Byte__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Byte__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Byte__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__MultiArrayDimension { + pub label: rosidl_runtime_c__String, + pub size: u32, + pub stride: u32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__MultiArrayDimension() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(std_msgs__msg__MultiArrayDimension)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__MultiArrayDimension) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension), + "::", + stringify!(label) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stride) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension), + "::", + stringify!(stride) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__MultiArrayDimension__Sequence { + pub data: *mut std_msgs__msg__MultiArrayDimension, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__MultiArrayDimension__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__MultiArrayDimension__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__MultiArrayDimension__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayDimension__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__MultiArrayLayout { + pub dim: std_msgs__msg__MultiArrayDimension__Sequence, + pub data_offset: u32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__MultiArrayLayout() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(std_msgs__msg__MultiArrayLayout)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__MultiArrayLayout)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dim) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayLayout), + "::", + stringify!(dim) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayLayout), + "::", + stringify!(data_offset) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__MultiArrayLayout__Sequence { + pub data: *mut std_msgs__msg__MultiArrayLayout, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__MultiArrayLayout__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__MultiArrayLayout__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__MultiArrayLayout__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayLayout__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayLayout__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__MultiArrayLayout__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__ByteMultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__octet__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__ByteMultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__ByteMultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__ByteMultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ByteMultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ByteMultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__ByteMultiArray__Sequence { + pub data: *mut std_msgs__msg__ByteMultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__ByteMultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__ByteMultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__ByteMultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ByteMultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ByteMultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ByteMultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Char { + pub data: u8, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Char() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__Char)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Char)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Char), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Char__Sequence { + pub data: *mut std_msgs__msg__Char, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Char__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Char__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Char__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Char__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Char__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Char__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__ColorRGBA { + pub r: f32, + pub g: f32, + pub b: f32, + pub a: f32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__ColorRGBA() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(std_msgs__msg__ColorRGBA)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(std_msgs__msg__ColorRGBA)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).r) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA), + "::", + stringify!(r) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).g) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA), + "::", + stringify!(g) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).b) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA), + "::", + stringify!(b) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA), + "::", + stringify!(a) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__ColorRGBA__Sequence { + pub data: *mut std_msgs__msg__ColorRGBA, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__ColorRGBA__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__ColorRGBA__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__ColorRGBA__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__ColorRGBA__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Empty { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Empty() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__Empty)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Empty)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Empty), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Empty__Sequence { + pub data: *mut std_msgs__msg__Empty, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Empty__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Empty__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Empty__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Empty__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Empty__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Empty__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float32 { + pub data: f32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float32() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float32)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Float32)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float32__Sequence { + pub data: *mut std_msgs__msg__Float32, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float32__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float32__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float32__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Float32MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__float__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float32MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float32MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float32MultiArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float32MultiArray__Sequence { + pub data: *mut std_msgs__msg__Float32MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float32MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Float32MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float32MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float32MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float64 { + pub data: f64, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float64() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float64)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Float64)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float64__Sequence { + pub data: *mut std_msgs__msg__Float64, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float64__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float64__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float64__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Float64MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__double__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float64MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Float64MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float64MultiArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Float64MultiArray__Sequence { + pub data: *mut std_msgs__msg__Float64MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Float64MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Float64MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Float64MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Float64MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int16 { + pub data: i16, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int16() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 2usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int16)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int16)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int16__Sequence { + pub data: *mut std_msgs__msg__Int16, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int16__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int16__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int16__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Int16MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__int16__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int16MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int16MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int16MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int16MultiArray__Sequence { + pub data: *mut std_msgs__msg__Int16MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int16MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Int16MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Int16MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int16MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int32 { + pub data: i32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int32() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int32)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int32)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int32__Sequence { + pub data: *mut std_msgs__msg__Int32, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int32__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int32__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int32__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Int32MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__int32__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int32MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int32MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int32MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int32MultiArray__Sequence { + pub data: *mut std_msgs__msg__Int32MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int32MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Int32MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Int32MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int32MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int64 { + pub data: i64, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int64() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int64)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int64)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int64__Sequence { + pub data: *mut std_msgs__msg__Int64, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int64__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int64__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int64__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Int64MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__int64__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int64MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int64MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int64MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int64MultiArray__Sequence { + pub data: *mut std_msgs__msg__Int64MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int64MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Int64MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Int64MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int64MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int8 { + pub data: i8, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int8() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int8)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int8)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int8__Sequence { + pub data: *mut std_msgs__msg__Int8, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int8__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int8__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int8__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__Int8MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__int8__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int8MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__Int8MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__Int8MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__Int8MultiArray__Sequence { + pub data: *mut std_msgs__msg__Int8MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__Int8MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__Int8MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__Int8MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__Int8MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__String { + pub data: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__String() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__String)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__String)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__String), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__String__Sequence { + pub data: *mut std_msgs__msg__String, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__String__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__String__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__String__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__String__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__String__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__String__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt16 { + pub data: u16, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt16() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 2usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt16)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt16)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt16__Sequence { + pub data: *mut std_msgs__msg__UInt16, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt16__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt16__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt16__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__UInt16MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__uint16__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt16MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt16MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt16MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt16MultiArray__Sequence { + pub data: *mut std_msgs__msg__UInt16MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt16MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__UInt16MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__UInt16MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt16MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt32 { + pub data: u32, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt32() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt32)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt32)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt32__Sequence { + pub data: *mut std_msgs__msg__UInt32, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt32__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt32__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt32__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__UInt32MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__uint32__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt32MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt32MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt32MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt32MultiArray__Sequence { + pub data: *mut std_msgs__msg__UInt32MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt32MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__UInt32MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__UInt32MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt32MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt64 { + pub data: u64, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt64() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt64)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt64)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt64__Sequence { + pub data: *mut std_msgs__msg__UInt64, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt64__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt64__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt64__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__UInt64MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__uint64__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt64MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt64MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt64MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt64MultiArray__Sequence { + pub data: *mut std_msgs__msg__UInt64MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt64MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__UInt64MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__UInt64MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt64MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt8 { + pub data: u8, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt8() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt8)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt8)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt8__Sequence { + pub data: *mut std_msgs__msg__UInt8, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt8__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt8__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt8__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct std_msgs__msg__UInt8MultiArray { + pub layout: std_msgs__msg__MultiArrayLayout, + pub data: rosidl_runtime_c__uint8__Sequence, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt8MultiArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(std_msgs__msg__UInt8MultiArray)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(std_msgs__msg__UInt8MultiArray)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).layout) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8MultiArray), + "::", + stringify!(layout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8MultiArray), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct std_msgs__msg__UInt8MultiArray__Sequence { + pub data: *mut std_msgs__msg__UInt8MultiArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_std_msgs__msg__UInt8MultiArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(std_msgs__msg__UInt8MultiArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(std_msgs__msg__UInt8MultiArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8MultiArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8MultiArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(std_msgs__msg__UInt8MultiArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct stereo_msgs__msg__DisparityImage { + pub header: std_msgs__msg__Header, + pub image: sensor_msgs__msg__Image, + pub f: f32, + pub t: f32, + pub valid_window: sensor_msgs__msg__RegionOfInterest, + pub min_disparity: f32, + pub max_disparity: f32, + pub delta_d: f32, +} +#[test] +fn bindgen_test_layout_stereo_msgs__msg__DisparityImage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 168usize, + concat!("Size of: ", stringify!(stereo_msgs__msg__DisparityImage)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(stereo_msgs__msg__DisparityImage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).image) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(image) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(f) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t) as usize - ptr as usize }, + 132usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(t) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).valid_window) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(valid_window) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).min_disparity) as usize - ptr as usize }, + 156usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(min_disparity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).max_disparity) as usize - ptr as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(max_disparity) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).delta_d) as usize - ptr as usize }, + 164usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage), + "::", + stringify!(delta_d) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct stereo_msgs__msg__DisparityImage__Sequence { + pub data: *mut stereo_msgs__msg__DisparityImage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_stereo_msgs__msg__DisparityImage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(stereo_msgs__msg__DisparityImage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(stereo_msgs__msg__DisparityImage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(stereo_msgs__msg__DisparityImage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_Goal { + pub order: i32, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Goal() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(test_msgs__action__Fibonacci_Goal)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Goal) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).order) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Goal), + "::", + stringify!(order) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_Goal__Sequence { + pub data: *mut test_msgs__action__Fibonacci_Goal, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Goal__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_Goal__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Goal__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Goal__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Goal__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Goal__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__action__Fibonacci_Result { + pub sequence: rosidl_runtime_c__int32__Sequence, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Result() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__action__Fibonacci_Result)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Result) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sequence) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Result), + "::", + stringify!(sequence) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_Result__Sequence { + pub data: *mut test_msgs__action__Fibonacci_Result, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Result__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_Result__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Result__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Result__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Result__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Result__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__action__Fibonacci_Feedback { + pub sequence: rosidl_runtime_c__int32__Sequence, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Feedback() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_Feedback) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Feedback) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sequence) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Feedback), + "::", + stringify!(sequence) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_Feedback__Sequence { + pub data: *mut test_msgs__action__Fibonacci_Feedback, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_Feedback__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_Feedback__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_Feedback__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Feedback__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Feedback__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_Feedback__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_SendGoal_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub goal: test_msgs__action__Fibonacci_Goal, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request), + "::", + stringify!(goal) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_SendGoal_Request__Sequence { + pub data: *mut test_msgs__action__Fibonacci_SendGoal_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_SendGoal_Response { + pub accepted: bool, + pub stamp: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accepted) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response), + "::", + stringify!(accepted) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response), + "::", + stringify!(stamp) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_SendGoal_Response__Sequence { + pub data: *mut test_msgs__action__Fibonacci_SendGoal_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__Fibonacci_SendGoal_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_SendGoal_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_GetResult_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request), + "::", + stringify!(goal_id) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_GetResult_Request__Sequence { + pub data: *mut test_msgs__action__Fibonacci_GetResult_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__Fibonacci_GetResult_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__action__Fibonacci_GetResult_Response { + pub status: i8, + pub result: test_msgs__action__Fibonacci_Result, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response), + "::", + stringify!(status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_GetResult_Response__Sequence { + pub data: *mut test_msgs__action__Fibonacci_GetResult_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__Fibonacci_GetResult_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_GetResult_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__action__Fibonacci_FeedbackMessage { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub feedback: test_msgs__action__Fibonacci_Feedback, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_FeedbackMessage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feedback) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage), + "::", + stringify!(feedback) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__Fibonacci_FeedbackMessage__Sequence { + pub data: *mut test_msgs__action__Fibonacci_FeedbackMessage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__Fibonacci_FeedbackMessage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__Fibonacci_FeedbackMessage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Builtins { + pub duration_value: builtin_interfaces__msg__Duration, + pub time_value: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Builtins() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(test_msgs__msg__Builtins)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Builtins)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).duration_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Builtins), + "::", + stringify!(duration_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Builtins), + "::", + stringify!(time_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Builtins__Sequence { + pub data: *mut test_msgs__msg__Builtins, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Builtins__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Builtins__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Builtins__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Builtins__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Builtins__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Builtins__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__BasicTypes { + pub bool_value: bool, + pub byte_value: u8, + pub char_value: u8, + pub float32_value: f32, + pub float64_value: f64, + pub int8_value: i8, + pub uint8_value: u8, + pub int16_value: i16, + pub uint16_value: u16, + pub int32_value: i32, + pub uint32_value: u32, + pub int64_value: i64, + pub uint64_value: u64, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BasicTypes() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(test_msgs__msg__BasicTypes)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__BasicTypes)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(bool_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_value) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(byte_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_value) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(char_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_value) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(float32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(float64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_value) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(int8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_value) as usize - ptr as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(uint8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_value) as usize - ptr as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(int16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_value) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(uint16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(int32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_value) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(uint32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_value) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(int64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_value) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes), + "::", + stringify!(uint64_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__BasicTypes__Sequence { + pub data: *mut test_msgs__msg__BasicTypes, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BasicTypes__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__BasicTypes__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__BasicTypes__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BasicTypes__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Goal { + pub nested_field_no_pkg: test_msgs__msg__Builtins, + pub nested_field: test_msgs__msg__BasicTypes, + pub nested_different_pkg: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Goal() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Goal) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Goal) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field_no_pkg) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal), + "::", + stringify!(nested_field_no_pkg) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal), + "::", + stringify!(nested_field) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_different_pkg) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal), + "::", + stringify!(nested_different_pkg) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Goal__Sequence { + pub data: *mut test_msgs__action__NestedMessage_Goal, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Goal__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Goal__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Goal__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Goal__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Result { + pub nested_field_no_pkg: test_msgs__msg__Builtins, + pub nested_field: test_msgs__msg__BasicTypes, + pub nested_different_pkg: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Result() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Result) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Result) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field_no_pkg) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result), + "::", + stringify!(nested_field_no_pkg) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result), + "::", + stringify!(nested_field) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_different_pkg) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result), + "::", + stringify!(nested_different_pkg) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Result__Sequence { + pub data: *mut test_msgs__action__NestedMessage_Result, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Result__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Result__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Result__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Result__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Feedback { + pub nested_field_no_pkg: test_msgs__msg__Builtins, + pub nested_field: test_msgs__msg__BasicTypes, + pub nested_different_pkg: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Feedback() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Feedback) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Feedback) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field_no_pkg) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback), + "::", + stringify!(nested_field_no_pkg) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_field) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback), + "::", + stringify!(nested_field) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nested_different_pkg) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback), + "::", + stringify!(nested_different_pkg) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_Feedback__Sequence { + pub data: *mut test_msgs__action__NestedMessage_Feedback, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_Feedback__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_Feedback__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_Feedback__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_Feedback__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_SendGoal_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub goal: test_msgs__action__NestedMessage_Goal, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 88usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request), + "::", + stringify!(goal) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_SendGoal_Request__Sequence { + pub data: *mut test_msgs__action__NestedMessage_SendGoal_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__NestedMessage_SendGoal_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_SendGoal_Response { + pub accepted: bool, + pub stamp: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accepted) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response), + "::", + stringify!(accepted) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response), + "::", + stringify!(stamp) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_SendGoal_Response__Sequence { + pub data: *mut test_msgs__action__NestedMessage_SendGoal_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__NestedMessage_SendGoal_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_SendGoal_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_GetResult_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request), + "::", + stringify!(goal_id) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_GetResult_Request__Sequence { + pub data: *mut test_msgs__action__NestedMessage_GetResult_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__NestedMessage_GetResult_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_GetResult_Response { + pub status: i8, + pub result: test_msgs__action__NestedMessage_Result, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response), + "::", + stringify!(status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_GetResult_Response__Sequence { + pub data: *mut test_msgs__action__NestedMessage_GetResult_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__NestedMessage_GetResult_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_GetResult_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_FeedbackMessage { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub feedback: test_msgs__action__NestedMessage_Feedback, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_FeedbackMessage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 88usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feedback) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage), + "::", + stringify!(feedback) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__action__NestedMessage_FeedbackMessage__Sequence { + pub data: *mut test_msgs__action__NestedMessage_FeedbackMessage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__action__NestedMessage_FeedbackMessage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + test_msgs__action__NestedMessage_FeedbackMessage__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__action__NestedMessage_FeedbackMessage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__Constants__BOOL_CONST: bool = true; +pub const test_msgs__msg__Constants__BYTE_CONST: _bindgen_ty_147 = + _bindgen_ty_147::test_msgs__msg__Constants__BYTE_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_147 { + test_msgs__msg__Constants__BYTE_CONST = 50, +} +pub const test_msgs__msg__Constants__CHAR_CONST: _bindgen_ty_148 = + _bindgen_ty_148::test_msgs__msg__Constants__CHAR_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_148 { + test_msgs__msg__Constants__CHAR_CONST = 100, +} +pub const test_msgs__msg__Constants__FLOAT32_CONST: f32 = 1.125; +pub const test_msgs__msg__Constants__FLOAT64_CONST: f64 = 1.125; +pub const test_msgs__msg__Constants__INT8_CONST: _bindgen_ty_149 = + _bindgen_ty_149::test_msgs__msg__Constants__INT8_CONST; +#[repr(i32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_149 { + test_msgs__msg__Constants__INT8_CONST = -50, +} +pub const test_msgs__msg__Constants__UINT8_CONST: _bindgen_ty_150 = + _bindgen_ty_150::test_msgs__msg__Constants__UINT8_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_150 { + test_msgs__msg__Constants__UINT8_CONST = 200, +} +pub const test_msgs__msg__Constants__INT16_CONST: _bindgen_ty_151 = + _bindgen_ty_151::test_msgs__msg__Constants__INT16_CONST; +#[repr(i32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_151 { + test_msgs__msg__Constants__INT16_CONST = -1000, +} +pub const test_msgs__msg__Constants__UINT16_CONST: _bindgen_ty_152 = + _bindgen_ty_152::test_msgs__msg__Constants__UINT16_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_152 { + test_msgs__msg__Constants__UINT16_CONST = 2000, +} +pub const test_msgs__msg__Constants__INT32_CONST: _bindgen_ty_153 = + _bindgen_ty_153::test_msgs__msg__Constants__INT32_CONST; +#[repr(i32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_153 { + test_msgs__msg__Constants__INT32_CONST = -30000, +} +pub const test_msgs__msg__Constants__UINT32_CONST: _bindgen_ty_154 = + _bindgen_ty_154::test_msgs__msg__Constants__UINT32_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_154 { + test_msgs__msg__Constants__UINT32_CONST = 60000, +} +pub const test_msgs__msg__Constants__INT64_CONST: _bindgen_ty_155 = + _bindgen_ty_155::test_msgs__msg__Constants__INT64_CONST; +#[repr(i32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_155 { + test_msgs__msg__Constants__INT64_CONST = -40000000, +} +pub const test_msgs__msg__Constants__UINT64_CONST: _bindgen_ty_156 = + _bindgen_ty_156::test_msgs__msg__Constants__UINT64_CONST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_156 { + test_msgs__msg__Constants__UINT64_CONST = 50000000, +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Constants { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Constants() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(test_msgs__msg__Constants)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Constants)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Constants), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Constants__Sequence { + pub data: *mut test_msgs__msg__Constants, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Constants__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Constants__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Constants__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Constants__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Constants__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Constants__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Defaults { + pub bool_value: bool, + pub byte_value: u8, + pub char_value: u8, + pub float32_value: f32, + pub float64_value: f64, + pub int8_value: i8, + pub uint8_value: u8, + pub int16_value: i16, + pub uint16_value: u16, + pub int32_value: i32, + pub uint32_value: u32, + pub int64_value: i64, + pub uint64_value: u64, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Defaults() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(test_msgs__msg__Defaults)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Defaults)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(bool_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_value) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(byte_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_value) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(char_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_value) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(float32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(float64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_value) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(int8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_value) as usize - ptr as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(uint8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_value) as usize - ptr as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(int16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_value) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(uint16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(int32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_value) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(uint32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_value) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(int64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_value) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults), + "::", + stringify!(uint64_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Defaults__Sequence { + pub data: *mut test_msgs__msg__Defaults, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Defaults__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Defaults__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Defaults__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Defaults__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__msg__Arrays { + pub bool_values: [bool; 3usize], + pub byte_values: [u8; 3usize], + pub char_values: [u8; 3usize], + pub float32_values: [f32; 3usize], + pub float64_values: [f64; 3usize], + pub int8_values: [i8; 3usize], + pub uint8_values: [u8; 3usize], + pub int16_values: [i16; 3usize], + pub uint16_values: [u16; 3usize], + pub int32_values: [i32; 3usize], + pub uint32_values: [u32; 3usize], + pub int64_values: [i64; 3usize], + pub uint64_values: [u64; 3usize], + pub string_values: [rosidl_runtime_c__String; 3usize], + pub basic_types_values: [test_msgs__msg__BasicTypes; 3usize], + pub constants_values: [test_msgs__msg__Constants; 3usize], + pub defaults_values: [test_msgs__msg__Defaults; 3usize], + pub bool_values_default: [bool; 3usize], + pub byte_values_default: [u8; 3usize], + pub char_values_default: [u8; 3usize], + pub float32_values_default: [f32; 3usize], + pub float64_values_default: [f64; 3usize], + pub int8_values_default: [i8; 3usize], + pub uint8_values_default: [u8; 3usize], + pub int16_values_default: [i16; 3usize], + pub uint16_values_default: [u16; 3usize], + pub int32_values_default: [i32; 3usize], + pub uint32_values_default: [u32; 3usize], + pub int64_values_default: [i64; 3usize], + pub uint64_values_default: [u64; 3usize], + pub string_values_default: [rosidl_runtime_c__String; 3usize], + pub alignment_check: i32, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Arrays() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 736usize, + concat!("Size of: ", stringify!(test_msgs__msg__Arrays)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Arrays)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 51usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 54usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(string_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 368usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 512usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 515usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 518usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 524usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 536usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 560usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 563usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 566usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 572usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 580usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 592usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 608usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 632usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values_default) as usize - ptr as usize }, + 656usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(string_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).alignment_check) as usize - ptr as usize }, + 728usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays), + "::", + stringify!(alignment_check) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Arrays__Sequence { + pub data: *mut test_msgs__msg__Arrays, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Arrays__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Arrays__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Arrays__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Arrays__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE: _bindgen_ty_157 = + _bindgen_ty_157::test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_157 { + test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE: _bindgen_ty_158 = + _bindgen_ty_158::test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_158 { + test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE: _bindgen_ty_159 = + _bindgen_ty_159::test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_159 { + test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE: _bindgen_ty_160 = + _bindgen_ty_160::test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_160 { + test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE: _bindgen_ty_161 = + _bindgen_ty_161::test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_161 { + test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE: _bindgen_ty_162 = + _bindgen_ty_162::test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_162 { + test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE: _bindgen_ty_163 = + _bindgen_ty_163::test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_163 { + test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE: _bindgen_ty_164 = + _bindgen_ty_164::test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_164 { + test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE: _bindgen_ty_165 = + _bindgen_ty_165::test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_165 { + test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE: _bindgen_ty_166 = + _bindgen_ty_166::test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_166 { + test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE: _bindgen_ty_167 = + _bindgen_ty_167::test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_167 { + test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE: _bindgen_ty_168 = + _bindgen_ty_168::test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_168 { + test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE: _bindgen_ty_169 = + _bindgen_ty_169::test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_169 { + test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE: _bindgen_ty_170 = + _bindgen_ty_170::test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_170 { + test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE: _bindgen_ty_171 = + _bindgen_ty_171::test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_171 { + test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE: _bindgen_ty_172 = + _bindgen_ty_172::test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_172 { + test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE: _bindgen_ty_173 = + _bindgen_ty_173::test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_173 { + test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE: _bindgen_ty_174 = + _bindgen_ty_174::test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_174 { + test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE: _bindgen_ty_175 = + _bindgen_ty_175::test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_175 { + test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE: _bindgen_ty_176 = + _bindgen_ty_176::test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_176 { + test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE: _bindgen_ty_177 = + _bindgen_ty_177::test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_177 { + test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE: _bindgen_ty_178 = + _bindgen_ty_178::test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_178 { + test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE: _bindgen_ty_179 = + _bindgen_ty_179::test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_179 { + test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE: _bindgen_ty_180 = + _bindgen_ty_180::test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_180 { + test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE: _bindgen_ty_181 = + _bindgen_ty_181::test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_181 { + test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE: _bindgen_ty_182 = + _bindgen_ty_182::test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_182 { + test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE: _bindgen_ty_183 = + _bindgen_ty_183::test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_183 { + test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE: _bindgen_ty_184 = + _bindgen_ty_184::test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_184 { + test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE: _bindgen_ty_185 = + _bindgen_ty_185::test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_185 { + test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE = 3, +} +#[repr(C)] +pub struct test_msgs__msg__BoundedPlainSequences { + pub bool_values: rosidl_runtime_c__boolean__Sequence, + pub byte_values: rosidl_runtime_c__octet__Sequence, + pub char_values: rosidl_runtime_c__uint8__Sequence, + pub float32_values: rosidl_runtime_c__float__Sequence, + pub float64_values: rosidl_runtime_c__double__Sequence, + pub int8_values: rosidl_runtime_c__int8__Sequence, + pub uint8_values: rosidl_runtime_c__uint8__Sequence, + pub int16_values: rosidl_runtime_c__int16__Sequence, + pub uint16_values: rosidl_runtime_c__uint16__Sequence, + pub int32_values: rosidl_runtime_c__int32__Sequence, + pub uint32_values: rosidl_runtime_c__uint32__Sequence, + pub int64_values: rosidl_runtime_c__int64__Sequence, + pub uint64_values: rosidl_runtime_c__uint64__Sequence, + pub basic_types_values: test_msgs__msg__BasicTypes__Sequence, + pub constants_values: test_msgs__msg__Constants__Sequence, + pub defaults_values: test_msgs__msg__Defaults__Sequence, + pub bool_values_default: rosidl_runtime_c__boolean__Sequence, + pub byte_values_default: rosidl_runtime_c__octet__Sequence, + pub char_values_default: rosidl_runtime_c__uint8__Sequence, + pub float32_values_default: rosidl_runtime_c__float__Sequence, + pub float64_values_default: rosidl_runtime_c__double__Sequence, + pub int8_values_default: rosidl_runtime_c__int8__Sequence, + pub uint8_values_default: rosidl_runtime_c__uint8__Sequence, + pub int16_values_default: rosidl_runtime_c__int16__Sequence, + pub uint16_values_default: rosidl_runtime_c__uint16__Sequence, + pub int32_values_default: rosidl_runtime_c__int32__Sequence, + pub uint32_values_default: rosidl_runtime_c__uint32__Sequence, + pub int64_values_default: rosidl_runtime_c__int64__Sequence, + pub uint64_values_default: rosidl_runtime_c__uint64__Sequence, + pub alignment_check: i32, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BoundedPlainSequences() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 704usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__BoundedPlainSequences) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__BoundedPlainSequences) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 240usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 264usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 288usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 312usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 432usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 456usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 480usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 504usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 528usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 552usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 576usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 600usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 624usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 648usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 672usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).alignment_check) as usize - ptr as usize }, + 696usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences), + "::", + stringify!(alignment_check) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__BoundedPlainSequences__Sequence { + pub data: *mut test_msgs__msg__BoundedPlainSequences, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BoundedPlainSequences__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__BoundedPlainSequences__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__BoundedPlainSequences__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedPlainSequences__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE: _bindgen_ty_186 = + _bindgen_ty_186::test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_186 { + test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE: _bindgen_ty_187 = + _bindgen_ty_187::test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_187 { + test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__char_values__MAX_SIZE: _bindgen_ty_188 = + _bindgen_ty_188::test_msgs__msg__BoundedSequences__char_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_188 { + test_msgs__msg__BoundedSequences__char_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE: _bindgen_ty_189 = + _bindgen_ty_189::test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_189 { + test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE: _bindgen_ty_190 = + _bindgen_ty_190::test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_190 { + test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE: _bindgen_ty_191 = + _bindgen_ty_191::test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_191 { + test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE: _bindgen_ty_192 = + _bindgen_ty_192::test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_192 { + test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE: _bindgen_ty_193 = + _bindgen_ty_193::test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_193 { + test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE: _bindgen_ty_194 = + _bindgen_ty_194::test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_194 { + test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE: _bindgen_ty_195 = + _bindgen_ty_195::test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_195 { + test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE: _bindgen_ty_196 = + _bindgen_ty_196::test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_196 { + test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE: _bindgen_ty_197 = + _bindgen_ty_197::test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_197 { + test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE: _bindgen_ty_198 = + _bindgen_ty_198::test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_198 { + test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__string_values__MAX_SIZE: _bindgen_ty_199 = + _bindgen_ty_199::test_msgs__msg__BoundedSequences__string_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_199 { + test_msgs__msg__BoundedSequences__string_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE: _bindgen_ty_200 = + _bindgen_ty_200::test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_200 { + test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE: _bindgen_ty_201 = + _bindgen_ty_201::test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_201 { + test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE: _bindgen_ty_202 = + _bindgen_ty_202::test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_202 { + test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE: _bindgen_ty_203 = + _bindgen_ty_203::test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_203 { + test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE: _bindgen_ty_204 = + _bindgen_ty_204::test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_204 { + test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE: _bindgen_ty_205 = + _bindgen_ty_205::test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_205 { + test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE: _bindgen_ty_206 = + _bindgen_ty_206::test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_206 { + test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE: _bindgen_ty_207 = + _bindgen_ty_207::test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_207 { + test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE: _bindgen_ty_208 = + _bindgen_ty_208::test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_208 { + test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE: _bindgen_ty_209 = + _bindgen_ty_209::test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_209 { + test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE: _bindgen_ty_210 = + _bindgen_ty_210::test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_210 { + test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE: _bindgen_ty_211 = + _bindgen_ty_211::test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_211 { + test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE: _bindgen_ty_212 = + _bindgen_ty_212::test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_212 { + test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE: _bindgen_ty_213 = + _bindgen_ty_213::test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_213 { + test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE: _bindgen_ty_214 = + _bindgen_ty_214::test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_214 { + test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE: _bindgen_ty_215 = + _bindgen_ty_215::test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_215 { + test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE = 3, +} +pub const test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE: _bindgen_ty_216 = + _bindgen_ty_216::test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_216 { + test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE = 3, +} +#[repr(C)] +pub struct test_msgs__msg__BoundedSequences { + pub bool_values: rosidl_runtime_c__boolean__Sequence, + pub byte_values: rosidl_runtime_c__octet__Sequence, + pub char_values: rosidl_runtime_c__uint8__Sequence, + pub float32_values: rosidl_runtime_c__float__Sequence, + pub float64_values: rosidl_runtime_c__double__Sequence, + pub int8_values: rosidl_runtime_c__int8__Sequence, + pub uint8_values: rosidl_runtime_c__uint8__Sequence, + pub int16_values: rosidl_runtime_c__int16__Sequence, + pub uint16_values: rosidl_runtime_c__uint16__Sequence, + pub int32_values: rosidl_runtime_c__int32__Sequence, + pub uint32_values: rosidl_runtime_c__uint32__Sequence, + pub int64_values: rosidl_runtime_c__int64__Sequence, + pub uint64_values: rosidl_runtime_c__uint64__Sequence, + pub string_values: rosidl_runtime_c__String__Sequence, + pub basic_types_values: test_msgs__msg__BasicTypes__Sequence, + pub constants_values: test_msgs__msg__Constants__Sequence, + pub defaults_values: test_msgs__msg__Defaults__Sequence, + pub bool_values_default: rosidl_runtime_c__boolean__Sequence, + pub byte_values_default: rosidl_runtime_c__octet__Sequence, + pub char_values_default: rosidl_runtime_c__uint8__Sequence, + pub float32_values_default: rosidl_runtime_c__float__Sequence, + pub float64_values_default: rosidl_runtime_c__double__Sequence, + pub int8_values_default: rosidl_runtime_c__int8__Sequence, + pub uint8_values_default: rosidl_runtime_c__uint8__Sequence, + pub int16_values_default: rosidl_runtime_c__int16__Sequence, + pub uint16_values_default: rosidl_runtime_c__uint16__Sequence, + pub int32_values_default: rosidl_runtime_c__int32__Sequence, + pub uint32_values_default: rosidl_runtime_c__uint32__Sequence, + pub int64_values_default: rosidl_runtime_c__int64__Sequence, + pub uint64_values_default: rosidl_runtime_c__uint64__Sequence, + pub string_values_default: rosidl_runtime_c__String__Sequence, + pub alignment_check: i32, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BoundedSequences() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 752usize, + concat!("Size of: ", stringify!(test_msgs__msg__BoundedSequences)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__BoundedSequences) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 240usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 264usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 288usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values) as usize - ptr as usize }, + 312usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(string_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 432usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 456usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 480usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 504usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 528usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 552usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 576usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 600usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 624usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 648usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 672usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 696usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values_default) as usize - ptr as usize }, + 720usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(string_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).alignment_check) as usize - ptr as usize }, + 744usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences), + "::", + stringify!(alignment_check) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__BoundedSequences__Sequence { + pub data: *mut test_msgs__msg__BoundedSequences, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__BoundedSequences__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__BoundedSequences__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__BoundedSequences__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__BoundedSequences__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Empty { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Empty() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(test_msgs__msg__Empty)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Empty)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Empty), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Empty__Sequence { + pub data: *mut test_msgs__msg__Empty, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Empty__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Empty__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Empty__Sequence)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Empty__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Empty__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Empty__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__msg__UnboundedSequences { + pub bool_values: rosidl_runtime_c__boolean__Sequence, + pub byte_values: rosidl_runtime_c__octet__Sequence, + pub char_values: rosidl_runtime_c__uint8__Sequence, + pub float32_values: rosidl_runtime_c__float__Sequence, + pub float64_values: rosidl_runtime_c__double__Sequence, + pub int8_values: rosidl_runtime_c__int8__Sequence, + pub uint8_values: rosidl_runtime_c__uint8__Sequence, + pub int16_values: rosidl_runtime_c__int16__Sequence, + pub uint16_values: rosidl_runtime_c__uint16__Sequence, + pub int32_values: rosidl_runtime_c__int32__Sequence, + pub uint32_values: rosidl_runtime_c__uint32__Sequence, + pub int64_values: rosidl_runtime_c__int64__Sequence, + pub uint64_values: rosidl_runtime_c__uint64__Sequence, + pub string_values: rosidl_runtime_c__String__Sequence, + pub basic_types_values: test_msgs__msg__BasicTypes__Sequence, + pub constants_values: test_msgs__msg__Constants__Sequence, + pub defaults_values: test_msgs__msg__Defaults__Sequence, + pub bool_values_default: rosidl_runtime_c__boolean__Sequence, + pub byte_values_default: rosidl_runtime_c__octet__Sequence, + pub char_values_default: rosidl_runtime_c__uint8__Sequence, + pub float32_values_default: rosidl_runtime_c__float__Sequence, + pub float64_values_default: rosidl_runtime_c__double__Sequence, + pub int8_values_default: rosidl_runtime_c__int8__Sequence, + pub uint8_values_default: rosidl_runtime_c__uint8__Sequence, + pub int16_values_default: rosidl_runtime_c__int16__Sequence, + pub uint16_values_default: rosidl_runtime_c__uint16__Sequence, + pub int32_values_default: rosidl_runtime_c__int32__Sequence, + pub uint32_values_default: rosidl_runtime_c__uint32__Sequence, + pub int64_values_default: rosidl_runtime_c__int64__Sequence, + pub uint64_values_default: rosidl_runtime_c__uint64__Sequence, + pub string_values_default: rosidl_runtime_c__String__Sequence, + pub alignment_check: i32, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__UnboundedSequences() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 752usize, + concat!("Size of: ", stringify!(test_msgs__msg__UnboundedSequences)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__UnboundedSequences) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 240usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 264usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 288usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values) as usize - ptr as usize }, + 312usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(string_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 432usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 456usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 480usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 504usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 528usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 552usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 576usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 600usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 624usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 648usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 672usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 696usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values_default) as usize - ptr as usize }, + 720usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(string_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).alignment_check) as usize - ptr as usize }, + 744usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences), + "::", + stringify!(alignment_check) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__UnboundedSequences__Sequence { + pub data: *mut test_msgs__msg__UnboundedSequences, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__UnboundedSequences__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__UnboundedSequences__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__UnboundedSequences__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__UnboundedSequences__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE: _bindgen_ty_217 = + _bindgen_ty_217::test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_217 { + test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE = 3, +} +pub const test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE: + _bindgen_ty_218 = + _bindgen_ty_218::test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_218 { + test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE = 3, +} +pub const test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE: + _bindgen_ty_219 = + _bindgen_ty_219::test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_219 { + test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE = 3, +} +#[repr(C)] +pub struct test_msgs__msg__MultiNested { + pub array_of_arrays: [test_msgs__msg__Arrays; 3usize], + pub array_of_bounded_sequences: [test_msgs__msg__BoundedSequences; 3usize], + pub array_of_unbounded_sequences: [test_msgs__msg__UnboundedSequences; 3usize], + pub bounded_sequence_of_arrays: test_msgs__msg__Arrays__Sequence, + pub bounded_sequence_of_bounded_sequences: test_msgs__msg__BoundedSequences__Sequence, + pub bounded_sequence_of_unbounded_sequences: test_msgs__msg__UnboundedSequences__Sequence, + pub unbounded_sequence_of_arrays: test_msgs__msg__Arrays__Sequence, + pub unbounded_sequence_of_bounded_sequences: test_msgs__msg__BoundedSequences__Sequence, + pub unbounded_sequence_of_unbounded_sequences: test_msgs__msg__UnboundedSequences__Sequence, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__MultiNested() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 6864usize, + concat!("Size of: ", stringify!(test_msgs__msg__MultiNested)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__MultiNested)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).array_of_arrays) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(array_of_arrays) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).array_of_bounded_sequences) as usize - ptr as usize }, + 2208usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(array_of_bounded_sequences) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).array_of_unbounded_sequences) as usize - ptr as usize + }, + 4464usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(array_of_unbounded_sequences) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bounded_sequence_of_arrays) as usize - ptr as usize }, + 6720usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(bounded_sequence_of_arrays) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_sequence_of_bounded_sequences) as usize + - ptr as usize + }, + 6744usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(bounded_sequence_of_bounded_sequences) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_sequence_of_unbounded_sequences) as usize + - ptr as usize + }, + 6768usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(bounded_sequence_of_unbounded_sequences) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).unbounded_sequence_of_arrays) as usize - ptr as usize + }, + 6792usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(unbounded_sequence_of_arrays) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).unbounded_sequence_of_bounded_sequences) as usize + - ptr as usize + }, + 6816usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(unbounded_sequence_of_bounded_sequences) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).unbounded_sequence_of_unbounded_sequences) as usize + - ptr as usize + }, + 6840usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested), + "::", + stringify!(unbounded_sequence_of_unbounded_sequences) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__MultiNested__Sequence { + pub data: *mut test_msgs__msg__MultiNested, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__MultiNested__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__msg__MultiNested__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__MultiNested__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__MultiNested__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Nested { + pub basic_types_value: test_msgs__msg__BasicTypes, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Nested() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(test_msgs__msg__Nested)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Nested)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Nested), + "::", + stringify!(basic_types_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Nested__Sequence { + pub data: *mut test_msgs__msg__Nested, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Nested__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Nested__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Nested__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Nested__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Nested__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Nested__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__Strings__STRING_CONST: &[u8; 13usize] = b"Hello world!\0"; +pub const test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE: _bindgen_ty_220 = + _bindgen_ty_220::test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_220 { + test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE = 22, +} +pub const test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE: _bindgen_ty_221 = + _bindgen_ty_221::test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_221 { + test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE = 22, +} +pub const test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE: _bindgen_ty_222 = + _bindgen_ty_222::test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_222 { + test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE = 22, +} +pub const test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE: _bindgen_ty_223 = + _bindgen_ty_223::test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_223 { + test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE = 22, +} +pub const test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE: _bindgen_ty_224 = + _bindgen_ty_224::test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_224 { + test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE = 22, +} +pub const test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE: _bindgen_ty_225 = + _bindgen_ty_225::test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_225 { + test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE = 22, +} +#[repr(C)] +pub struct test_msgs__msg__Strings { + pub string_value: rosidl_runtime_c__String, + pub string_value_default1: rosidl_runtime_c__String, + pub string_value_default2: rosidl_runtime_c__String, + pub string_value_default3: rosidl_runtime_c__String, + pub string_value_default4: rosidl_runtime_c__String, + pub string_value_default5: rosidl_runtime_c__String, + pub bounded_string_value: rosidl_runtime_c__String, + pub bounded_string_value_default1: rosidl_runtime_c__String, + pub bounded_string_value_default2: rosidl_runtime_c__String, + pub bounded_string_value_default3: rosidl_runtime_c__String, + pub bounded_string_value_default4: rosidl_runtime_c__String, + pub bounded_string_value_default5: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Strings() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 288usize, + concat!("Size of: ", stringify!(test_msgs__msg__Strings)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__Strings)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value_default1) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value_default1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value_default2) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value_default2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value_default3) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value_default3) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value_default4) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value_default4) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value_default5) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(string_value_default5) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bounded_string_value) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_string_value_default1) as usize - ptr as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value_default1) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_string_value_default2) as usize - ptr as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value_default2) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_string_value_default3) as usize - ptr as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value_default3) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_string_value_default4) as usize - ptr as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value_default4) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_string_value_default5) as usize - ptr as usize + }, + 264usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings), + "::", + stringify!(bounded_string_value_default5) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__Strings__Sequence { + pub data: *mut test_msgs__msg__Strings, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__Strings__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__Strings__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__Strings__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__Strings__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE: _bindgen_ty_226 = + _bindgen_ty_226::test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_226 { + test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE = 3, +} +#[repr(C)] +pub struct test_msgs__msg__WStrings { + pub wstring_value: rosidl_runtime_c__U16String, + pub wstring_value_default1: rosidl_runtime_c__U16String, + pub wstring_value_default2: rosidl_runtime_c__U16String, + pub wstring_value_default3: rosidl_runtime_c__U16String, + pub array_of_wstrings: [rosidl_runtime_c__U16String; 3usize], + pub bounded_sequence_of_wstrings: rosidl_runtime_c__U16String__Sequence, + pub unbounded_sequence_of_wstrings: rosidl_runtime_c__U16String__Sequence, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__WStrings() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 216usize, + concat!("Size of: ", stringify!(test_msgs__msg__WStrings)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__msg__WStrings)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wstring_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(wstring_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wstring_value_default1) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(wstring_value_default1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wstring_value_default2) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(wstring_value_default2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wstring_value_default3) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(wstring_value_default3) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).array_of_wstrings) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(array_of_wstrings) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).bounded_sequence_of_wstrings) as usize - ptr as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(bounded_sequence_of_wstrings) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).unbounded_sequence_of_wstrings) as usize - ptr as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings), + "::", + stringify!(unbounded_sequence_of_wstrings) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__msg__WStrings__Sequence { + pub data: *mut test_msgs__msg__WStrings, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__msg__WStrings__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(test_msgs__msg__WStrings__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__msg__WStrings__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__msg__WStrings__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__srv__Arrays_Request { + pub bool_values: [bool; 3usize], + pub byte_values: [u8; 3usize], + pub char_values: [u8; 3usize], + pub float32_values: [f32; 3usize], + pub float64_values: [f64; 3usize], + pub int8_values: [i8; 3usize], + pub uint8_values: [u8; 3usize], + pub int16_values: [i16; 3usize], + pub uint16_values: [u16; 3usize], + pub int32_values: [i32; 3usize], + pub uint32_values: [u32; 3usize], + pub int64_values: [i64; 3usize], + pub uint64_values: [u64; 3usize], + pub string_values: [rosidl_runtime_c__String; 3usize], + pub basic_types_values: [test_msgs__msg__BasicTypes; 3usize], + pub constants_values: [test_msgs__msg__Constants; 3usize], + pub defaults_values: [test_msgs__msg__Defaults; 3usize], + pub bool_values_default: [bool; 3usize], + pub byte_values_default: [u8; 3usize], + pub char_values_default: [u8; 3usize], + pub float32_values_default: [f32; 3usize], + pub float64_values_default: [f64; 3usize], + pub int8_values_default: [i8; 3usize], + pub uint8_values_default: [u8; 3usize], + pub int16_values_default: [i16; 3usize], + pub uint16_values_default: [u16; 3usize], + pub int32_values_default: [i32; 3usize], + pub uint32_values_default: [u32; 3usize], + pub int64_values_default: [i64; 3usize], + pub uint64_values_default: [u64; 3usize], + pub string_values_default: [rosidl_runtime_c__String; 3usize], +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Arrays_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 728usize, + concat!("Size of: ", stringify!(test_msgs__srv__Arrays_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__srv__Arrays_Request)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 51usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 54usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(string_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 368usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 512usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 515usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 518usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 524usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 536usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 560usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 563usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 566usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 572usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 580usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 592usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 608usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 632usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values_default) as usize - ptr as usize }, + 656usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request), + "::", + stringify!(string_values_default) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Arrays_Request__Sequence { + pub data: *mut test_msgs__srv__Arrays_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Arrays_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__Arrays_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__Arrays_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__srv__Arrays_Response { + pub bool_values: [bool; 3usize], + pub byte_values: [u8; 3usize], + pub char_values: [u8; 3usize], + pub float32_values: [f32; 3usize], + pub float64_values: [f64; 3usize], + pub int8_values: [i8; 3usize], + pub uint8_values: [u8; 3usize], + pub int16_values: [i16; 3usize], + pub uint16_values: [u16; 3usize], + pub int32_values: [i32; 3usize], + pub uint32_values: [u32; 3usize], + pub int64_values: [i64; 3usize], + pub uint64_values: [u64; 3usize], + pub string_values: [rosidl_runtime_c__String; 3usize], + pub basic_types_values: [test_msgs__msg__BasicTypes; 3usize], + pub constants_values: [test_msgs__msg__Constants; 3usize], + pub defaults_values: [test_msgs__msg__Defaults; 3usize], + pub bool_values_default: [bool; 3usize], + pub byte_values_default: [u8; 3usize], + pub char_values_default: [u8; 3usize], + pub float32_values_default: [f32; 3usize], + pub float64_values_default: [f64; 3usize], + pub int8_values_default: [i8; 3usize], + pub uint8_values_default: [u8; 3usize], + pub int16_values_default: [i16; 3usize], + pub uint16_values_default: [u16; 3usize], + pub int32_values_default: [i32; 3usize], + pub uint32_values_default: [u32; 3usize], + pub int64_values_default: [i64; 3usize], + pub uint64_values_default: [u64; 3usize], + pub string_values_default: [rosidl_runtime_c__String; 3usize], +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Arrays_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 728usize, + concat!("Size of: ", stringify!(test_msgs__srv__Arrays_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(test_msgs__srv__Arrays_Response)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(bool_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(byte_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(char_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(float32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(float64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values) as usize - ptr as usize }, + 51usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint8_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values) as usize - ptr as usize }, + 54usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint16_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values) as usize - ptr as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint32_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint64_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(string_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).basic_types_values) as usize - ptr as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(basic_types_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).constants_values) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(constants_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).defaults_values) as usize - ptr as usize }, + 368usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(defaults_values) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_values_default) as usize - ptr as usize }, + 512usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(bool_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_values_default) as usize - ptr as usize }, + 515usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(byte_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_values_default) as usize - ptr as usize }, + 518usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(char_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_values_default) as usize - ptr as usize }, + 524usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(float32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_values_default) as usize - ptr as usize }, + 536usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(float64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_values_default) as usize - ptr as usize }, + 560usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_values_default) as usize - ptr as usize }, + 563usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint8_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_values_default) as usize - ptr as usize }, + 566usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_values_default) as usize - ptr as usize }, + 572usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint16_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_values_default) as usize - ptr as usize }, + 580usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_values_default) as usize - ptr as usize }, + 592usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint32_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_values_default) as usize - ptr as usize }, + 608usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(int64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_values_default) as usize - ptr as usize }, + 632usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(uint64_values_default) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_values_default) as usize - ptr as usize }, + 656usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response), + "::", + stringify!(string_values_default) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Arrays_Response__Sequence { + pub data: *mut test_msgs__srv__Arrays_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Arrays_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__Arrays_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__Arrays_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Arrays_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__srv__BasicTypes_Request { + pub bool_value: bool, + pub byte_value: u8, + pub char_value: u8, + pub float32_value: f32, + pub float64_value: f64, + pub int8_value: i8, + pub uint8_value: u8, + pub int16_value: i16, + pub uint16_value: u16, + pub int32_value: i32, + pub uint32_value: u32, + pub int64_value: i64, + pub uint64_value: u64, + pub string_value: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__BasicTypes_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(test_msgs__srv__BasicTypes_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__BasicTypes_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(bool_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_value) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(byte_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_value) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(char_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_value) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(float32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(float64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_value) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(int8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_value) as usize - ptr as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(uint8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_value) as usize - ptr as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(int16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_value) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(uint16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(int32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_value) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(uint32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_value) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(int64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_value) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(uint64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request), + "::", + stringify!(string_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__BasicTypes_Request__Sequence { + pub data: *mut test_msgs__srv__BasicTypes_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__BasicTypes_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__BasicTypes_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__BasicTypes_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct test_msgs__srv__BasicTypes_Response { + pub bool_value: bool, + pub byte_value: u8, + pub char_value: u8, + pub float32_value: f32, + pub float64_value: f64, + pub int8_value: i8, + pub uint8_value: u8, + pub int16_value: i16, + pub uint16_value: u16, + pub int32_value: i32, + pub uint32_value: u32, + pub int64_value: i64, + pub uint64_value: u64, + pub string_value: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__BasicTypes_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(test_msgs__srv__BasicTypes_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__BasicTypes_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bool_value) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(bool_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).byte_value) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(byte_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).char_value) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(char_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float32_value) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(float32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).float64_value) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(float64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int8_value) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(int8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint8_value) as usize - ptr as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(uint8_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int16_value) as usize - ptr as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(int16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint16_value) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(uint16_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int32_value) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(int32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint32_value) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(uint32_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).int64_value) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(int64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uint64_value) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(uint64_value) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).string_value) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response), + "::", + stringify!(string_value) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__BasicTypes_Response__Sequence { + pub data: *mut test_msgs__srv__BasicTypes_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__BasicTypes_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__BasicTypes_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__BasicTypes_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__BasicTypes_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Empty_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Empty_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(test_msgs__srv__Empty_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(test_msgs__srv__Empty_Request)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Empty_Request__Sequence { + pub data: *mut test_msgs__srv__Empty_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Empty_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__Empty_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__Empty_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Empty_Response { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Empty_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(test_msgs__srv__Empty_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(test_msgs__srv__Empty_Response)) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Response), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct test_msgs__srv__Empty_Response__Sequence { + pub data: *mut test_msgs__srv__Empty_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_test_msgs__srv__Empty_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(test_msgs__srv__Empty_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(test_msgs__srv__Empty_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(test_msgs__srv__Empty_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct tf2_msgs__action__LookupTransform_Goal { + pub target_frame: rosidl_runtime_c__String, + pub source_frame: rosidl_runtime_c__String, + pub source_time: builtin_interfaces__msg__Time, + pub timeout: builtin_interfaces__msg__Duration, + pub target_time: builtin_interfaces__msg__Time, + pub fixed_frame: rosidl_runtime_c__String, + pub advanced: bool, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Goal() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Goal) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Goal) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).target_frame) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(target_frame) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).source_frame) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(source_frame) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).source_time) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(source_time) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(timeout) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).target_time) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(target_time) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fixed_frame) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(fixed_frame) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).advanced) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal), + "::", + stringify!(advanced) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_Goal__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_Goal, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Goal__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Goal__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Goal__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Goal__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const tf2_msgs__msg__TF2Error__NO_ERROR: _bindgen_ty_227 = + _bindgen_ty_227::tf2_msgs__msg__TF2Error__NO_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_227 { + tf2_msgs__msg__TF2Error__NO_ERROR = 0, +} +pub const tf2_msgs__msg__TF2Error__LOOKUP_ERROR: _bindgen_ty_228 = + _bindgen_ty_228::tf2_msgs__msg__TF2Error__LOOKUP_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_228 { + tf2_msgs__msg__TF2Error__LOOKUP_ERROR = 1, +} +pub const tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR: _bindgen_ty_229 = + _bindgen_ty_229::tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_229 { + tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR = 2, +} +pub const tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR: _bindgen_ty_230 = + _bindgen_ty_230::tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_230 { + tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR = 3, +} +pub const tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR: _bindgen_ty_231 = + _bindgen_ty_231::tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_231 { + tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR = 4, +} +pub const tf2_msgs__msg__TF2Error__TIMEOUT_ERROR: _bindgen_ty_232 = + _bindgen_ty_232::tf2_msgs__msg__TF2Error__TIMEOUT_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_232 { + tf2_msgs__msg__TF2Error__TIMEOUT_ERROR = 5, +} +pub const tf2_msgs__msg__TF2Error__TRANSFORM_ERROR: _bindgen_ty_233 = + _bindgen_ty_233::tf2_msgs__msg__TF2Error__TRANSFORM_ERROR; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_233 { + tf2_msgs__msg__TF2Error__TRANSFORM_ERROR = 6, +} +#[repr(C)] +pub struct tf2_msgs__msg__TF2Error { + pub error: u8, + pub error_string: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_tf2_msgs__msg__TF2Error() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(tf2_msgs__msg__TF2Error)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(tf2_msgs__msg__TF2Error)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TF2Error), + "::", + stringify!(error) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).error_string) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TF2Error), + "::", + stringify!(error_string) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__msg__TF2Error__Sequence { + pub data: *mut tf2_msgs__msg__TF2Error, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__msg__TF2Error__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(tf2_msgs__msg__TF2Error__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__msg__TF2Error__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TF2Error__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TF2Error__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TF2Error__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct tf2_msgs__action__LookupTransform_Result { + pub transform: geometry_msgs__msg__TransformStamped, + pub error: tf2_msgs__msg__TF2Error, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Result() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 144usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Result) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Result) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transform) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Result), + "::", + stringify!(transform) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Result), + "::", + stringify!(error) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_Result__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_Result, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Result__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Result__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Result__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Result__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Result__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Result__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_Feedback { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Feedback() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Feedback) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_Feedback__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_Feedback, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Feedback__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_Feedback__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_Feedback__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct tf2_msgs__action__LookupTransform_SendGoal_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub goal: tf2_msgs__action__LookupTransform_Goal, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 120usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request), + "::", + stringify!(goal) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_SendGoal_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_SendGoal_Response { + pub accepted: bool, + pub stamp: builtin_interfaces__msg__Time, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accepted) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response), + "::", + stringify!(accepted) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).stamp) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response), + "::", + stringify!(stamp) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_SendGoal_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_GetResult_Request { + pub goal_id: unique_identifier_msgs__msg__UUID, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request), + "::", + stringify!(goal_id) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_GetResult_Request__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_GetResult_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + tf2_msgs__action__LookupTransform_GetResult_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct tf2_msgs__action__LookupTransform_GetResult_Response { + pub status: i8, + pub result: tf2_msgs__action__LookupTransform_Result, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 152usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response), + "::", + stringify!(status) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response), + "::", + stringify!(result) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_GetResult_Response__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_GetResult_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + tf2_msgs__action__LookupTransform_GetResult_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_GetResult_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_FeedbackMessage { + pub goal_id: unique_identifier_msgs__msg__UUID, + pub feedback: tf2_msgs__action__LookupTransform_Feedback, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_FeedbackMessage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 17usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).goal_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage), + "::", + stringify!(goal_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feedback) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage), + "::", + stringify!(feedback) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence { + pub data: *mut tf2_msgs__action__LookupTransform_FeedbackMessage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__msg__TFMessage { + pub transforms: geometry_msgs__msg__TransformStamped__Sequence, +} +#[test] +fn bindgen_test_layout_tf2_msgs__msg__TFMessage() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(tf2_msgs__msg__TFMessage)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(tf2_msgs__msg__TFMessage)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transforms) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TFMessage), + "::", + stringify!(transforms) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__msg__TFMessage__Sequence { + pub data: *mut tf2_msgs__msg__TFMessage, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__msg__TFMessage__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(tf2_msgs__msg__TFMessage__Sequence)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__msg__TFMessage__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TFMessage__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TFMessage__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__msg__TFMessage__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__srv__FrameGraph_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!("Size of: ", stringify!(tf2_msgs__srv__FrameGraph_Request)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__srv__FrameGraph_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__srv__FrameGraph_Request__Sequence { + pub data: *mut tf2_msgs__srv__FrameGraph_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__srv__FrameGraph_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__srv__FrameGraph_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct tf2_msgs__srv__FrameGraph_Response { + pub frame_yaml: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(tf2_msgs__srv__FrameGraph_Response)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__srv__FrameGraph_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).frame_yaml) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Response), + "::", + stringify!(frame_yaml) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct tf2_msgs__srv__FrameGraph_Response__Sequence { + pub data: *mut tf2_msgs__srv__FrameGraph_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(tf2_msgs__srv__FrameGraph_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(tf2_msgs__srv__FrameGraph_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(tf2_msgs__srv__FrameGraph_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct trajectory_msgs__msg__JointTrajectoryPoint { + pub positions: rosidl_runtime_c__double__Sequence, + pub velocities: rosidl_runtime_c__double__Sequence, + pub accelerations: rosidl_runtime_c__double__Sequence, + pub effort: rosidl_runtime_c__double__Sequence, + pub time_from_start: builtin_interfaces__msg__Duration, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectoryPoint() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).positions) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint), + "::", + stringify!(positions) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).velocities) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint), + "::", + stringify!(velocities) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accelerations) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint), + "::", + stringify!(accelerations) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).effort) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint), + "::", + stringify!(effort) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_from_start) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint), + "::", + stringify!(time_from_start) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct trajectory_msgs__msg__JointTrajectoryPoint__Sequence { + pub data: *mut trajectory_msgs__msg__JointTrajectoryPoint, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectoryPoint__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectoryPoint__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct trajectory_msgs__msg__JointTrajectory { + pub header: std_msgs__msg__Header, + pub joint_names: rosidl_runtime_c__String__Sequence, + pub points: trajectory_msgs__msg__JointTrajectoryPoint__Sequence, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectory() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__JointTrajectory) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__JointTrajectory) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).joint_names) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory), + "::", + stringify!(joint_names) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory), + "::", + stringify!(points) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct trajectory_msgs__msg__JointTrajectory__Sequence { + pub data: *mut trajectory_msgs__msg__JointTrajectory, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectory__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__JointTrajectory__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__JointTrajectory__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__JointTrajectory__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct trajectory_msgs__msg__MultiDOFJointTrajectoryPoint { + pub transforms: geometry_msgs__msg__Transform__Sequence, + pub velocities: geometry_msgs__msg__Twist__Sequence, + pub accelerations: geometry_msgs__msg__Twist__Sequence, + pub time_from_start: builtin_interfaces__msg__Duration, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectoryPoint() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).transforms) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint), + "::", + stringify!(transforms) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).velocities) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint), + "::", + stringify!(velocities) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accelerations) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint), + "::", + stringify!(accelerations) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).time_from_start) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint), + "::", + stringify!(time_from_start) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence { + pub data: *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct trajectory_msgs__msg__MultiDOFJointTrajectory { + pub header: std_msgs__msg__Header, + pub joint_names: rosidl_runtime_c__String__Sequence, + pub points: trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectory() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).joint_names) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory), + "::", + stringify!(joint_names) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory), + "::", + stringify!(points) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence { + pub data: *mut trajectory_msgs__msg__MultiDOFJointTrajectory, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const visualization_msgs__msg__ImageMarker__CIRCLE: _bindgen_ty_234 = + _bindgen_ty_234::visualization_msgs__msg__ImageMarker__CIRCLE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_234 { + visualization_msgs__msg__ImageMarker__CIRCLE = 0, +} +pub const visualization_msgs__msg__ImageMarker__LINE_STRIP: _bindgen_ty_235 = + _bindgen_ty_235::visualization_msgs__msg__ImageMarker__LINE_STRIP; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_235 { + visualization_msgs__msg__ImageMarker__LINE_STRIP = 1, +} +pub const visualization_msgs__msg__ImageMarker__LINE_LIST: _bindgen_ty_236 = + _bindgen_ty_236::visualization_msgs__msg__ImageMarker__LINE_LIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_236 { + visualization_msgs__msg__ImageMarker__LINE_LIST = 2, +} +pub const visualization_msgs__msg__ImageMarker__POLYGON: _bindgen_ty_237 = + _bindgen_ty_237::visualization_msgs__msg__ImageMarker__POLYGON; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_237 { + visualization_msgs__msg__ImageMarker__POLYGON = 3, +} +pub const visualization_msgs__msg__ImageMarker__POINTS: _bindgen_ty_238 = + _bindgen_ty_238::visualization_msgs__msg__ImageMarker__POINTS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_238 { + visualization_msgs__msg__ImageMarker__POINTS = 4, +} +pub const visualization_msgs__msg__ImageMarker__ADD: _bindgen_ty_239 = + _bindgen_ty_239::visualization_msgs__msg__ImageMarker__ADD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_239 { + visualization_msgs__msg__ImageMarker__ADD = 0, +} +pub const visualization_msgs__msg__ImageMarker__REMOVE: _bindgen_ty_240 = + _bindgen_ty_240::visualization_msgs__msg__ImageMarker__REMOVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_240 { + visualization_msgs__msg__ImageMarker__REMOVE = 1, +} +#[repr(C)] +pub struct visualization_msgs__msg__ImageMarker { + pub header: std_msgs__msg__Header, + pub ns: rosidl_runtime_c__String, + pub id: i32, + pub type_: i32, + pub action: i32, + pub position: geometry_msgs__msg__Point, + pub scale: f32, + pub outline_color: std_msgs__msg__ColorRGBA, + pub filled: u8, + pub fill_color: std_msgs__msg__ColorRGBA, + pub lifetime: builtin_interfaces__msg__Duration, + pub points: geometry_msgs__msg__Point__Sequence, + pub outline_colors: std_msgs__msg__ColorRGBA__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__ImageMarker() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 192usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__ImageMarker) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__ImageMarker) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ns) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(ns) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(action) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).position) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(position) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).scale) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(scale) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).outline_color) as usize - ptr as usize }, + 100usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(outline_color) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).filled) as usize - ptr as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(filled) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fill_color) as usize - ptr as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(fill_color) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).lifetime) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(lifetime) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(points) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).outline_colors) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker), + "::", + stringify!(outline_colors) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__ImageMarker__Sequence { + pub data: *mut visualization_msgs__msg__ImageMarker, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__ImageMarker__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__ImageMarker__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__ImageMarker__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__ImageMarker__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const visualization_msgs__msg__MenuEntry__FEEDBACK: _bindgen_ty_241 = + _bindgen_ty_241::visualization_msgs__msg__MenuEntry__FEEDBACK; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_241 { + visualization_msgs__msg__MenuEntry__FEEDBACK = 0, +} +pub const visualization_msgs__msg__MenuEntry__ROSRUN: _bindgen_ty_242 = + _bindgen_ty_242::visualization_msgs__msg__MenuEntry__ROSRUN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_242 { + visualization_msgs__msg__MenuEntry__ROSRUN = 1, +} +pub const visualization_msgs__msg__MenuEntry__ROSLAUNCH: _bindgen_ty_243 = + _bindgen_ty_243::visualization_msgs__msg__MenuEntry__ROSLAUNCH; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_243 { + visualization_msgs__msg__MenuEntry__ROSLAUNCH = 2, +} +#[repr(C)] +pub struct visualization_msgs__msg__MenuEntry { + pub id: u32, + pub parent_id: u32, + pub title: rosidl_runtime_c__String, + pub command: rosidl_runtime_c__String, + pub command_type: u8, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MenuEntry() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(visualization_msgs__msg__MenuEntry)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MenuEntry) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).parent_id) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry), + "::", + stringify!(parent_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).title) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry), + "::", + stringify!(title) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).command) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry), + "::", + stringify!(command) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).command_type) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry), + "::", + stringify!(command_type) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__MenuEntry__Sequence { + pub data: *mut visualization_msgs__msg__MenuEntry, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MenuEntry__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__MenuEntry__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MenuEntry__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MenuEntry__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const visualization_msgs__msg__InteractiveMarkerControl__INHERIT: _bindgen_ty_244 = + _bindgen_ty_244::visualization_msgs__msg__InteractiveMarkerControl__INHERIT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_244 { + visualization_msgs__msg__InteractiveMarkerControl__INHERIT = 0, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__FIXED: _bindgen_ty_245 = + _bindgen_ty_245::visualization_msgs__msg__InteractiveMarkerControl__FIXED; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_245 { + visualization_msgs__msg__InteractiveMarkerControl__FIXED = 1, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING: _bindgen_ty_246 = + _bindgen_ty_246::visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_246 { + visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING = 2, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__NONE: _bindgen_ty_247 = + _bindgen_ty_247::visualization_msgs__msg__InteractiveMarkerControl__NONE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_247 { + visualization_msgs__msg__InteractiveMarkerControl__NONE = 0, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MENU: _bindgen_ty_248 = + _bindgen_ty_248::visualization_msgs__msg__InteractiveMarkerControl__MENU; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_248 { + visualization_msgs__msg__InteractiveMarkerControl__MENU = 1, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__BUTTON: _bindgen_ty_249 = + _bindgen_ty_249::visualization_msgs__msg__InteractiveMarkerControl__BUTTON; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_249 { + visualization_msgs__msg__InteractiveMarkerControl__BUTTON = 2, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS: _bindgen_ty_250 = + _bindgen_ty_250::visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_250 { + visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS = 3, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE: _bindgen_ty_251 = + _bindgen_ty_251::visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_251 { + visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE = 4, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS: _bindgen_ty_252 = + _bindgen_ty_252::visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_252 { + visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS = 5, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE: _bindgen_ty_253 = + _bindgen_ty_253::visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_253 { + visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE = 6, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D: _bindgen_ty_254 = + _bindgen_ty_254::visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_254 { + visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D = 7, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D: _bindgen_ty_255 = + _bindgen_ty_255::visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_255 { + visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D = 8, +} +pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D: _bindgen_ty_256 = + _bindgen_ty_256::visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_256 { + visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D = 9, +} +pub const visualization_msgs__msg__Marker__ARROW: _bindgen_ty_257 = + _bindgen_ty_257::visualization_msgs__msg__Marker__ARROW; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_257 { + visualization_msgs__msg__Marker__ARROW = 0, +} +pub const visualization_msgs__msg__Marker__CUBE: _bindgen_ty_258 = + _bindgen_ty_258::visualization_msgs__msg__Marker__CUBE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_258 { + visualization_msgs__msg__Marker__CUBE = 1, +} +pub const visualization_msgs__msg__Marker__SPHERE: _bindgen_ty_259 = + _bindgen_ty_259::visualization_msgs__msg__Marker__SPHERE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_259 { + visualization_msgs__msg__Marker__SPHERE = 2, +} +pub const visualization_msgs__msg__Marker__CYLINDER: _bindgen_ty_260 = + _bindgen_ty_260::visualization_msgs__msg__Marker__CYLINDER; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_260 { + visualization_msgs__msg__Marker__CYLINDER = 3, +} +pub const visualization_msgs__msg__Marker__LINE_STRIP: _bindgen_ty_261 = + _bindgen_ty_261::visualization_msgs__msg__Marker__LINE_STRIP; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_261 { + visualization_msgs__msg__Marker__LINE_STRIP = 4, +} +pub const visualization_msgs__msg__Marker__LINE_LIST: _bindgen_ty_262 = + _bindgen_ty_262::visualization_msgs__msg__Marker__LINE_LIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_262 { + visualization_msgs__msg__Marker__LINE_LIST = 5, +} +pub const visualization_msgs__msg__Marker__CUBE_LIST: _bindgen_ty_263 = + _bindgen_ty_263::visualization_msgs__msg__Marker__CUBE_LIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_263 { + visualization_msgs__msg__Marker__CUBE_LIST = 6, +} +pub const visualization_msgs__msg__Marker__SPHERE_LIST: _bindgen_ty_264 = + _bindgen_ty_264::visualization_msgs__msg__Marker__SPHERE_LIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_264 { + visualization_msgs__msg__Marker__SPHERE_LIST = 7, +} +pub const visualization_msgs__msg__Marker__POINTS: _bindgen_ty_265 = + _bindgen_ty_265::visualization_msgs__msg__Marker__POINTS; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_265 { + visualization_msgs__msg__Marker__POINTS = 8, +} +pub const visualization_msgs__msg__Marker__TEXT_VIEW_FACING: _bindgen_ty_266 = + _bindgen_ty_266::visualization_msgs__msg__Marker__TEXT_VIEW_FACING; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_266 { + visualization_msgs__msg__Marker__TEXT_VIEW_FACING = 9, +} +pub const visualization_msgs__msg__Marker__MESH_RESOURCE: _bindgen_ty_267 = + _bindgen_ty_267::visualization_msgs__msg__Marker__MESH_RESOURCE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_267 { + visualization_msgs__msg__Marker__MESH_RESOURCE = 10, +} +pub const visualization_msgs__msg__Marker__TRIANGLE_LIST: _bindgen_ty_268 = + _bindgen_ty_268::visualization_msgs__msg__Marker__TRIANGLE_LIST; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_268 { + visualization_msgs__msg__Marker__TRIANGLE_LIST = 11, +} +pub const visualization_msgs__msg__Marker__ADD: _bindgen_ty_269 = + _bindgen_ty_269::visualization_msgs__msg__Marker__ADD; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_269 { + visualization_msgs__msg__Marker__ADD = 0, +} +pub const visualization_msgs__msg__Marker__MODIFY: _bindgen_ty_270 = + _bindgen_ty_270::visualization_msgs__msg__Marker__MODIFY; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_270 { + visualization_msgs__msg__Marker__MODIFY = 0, +} +pub const visualization_msgs__msg__Marker__DELETE: _bindgen_ty_271 = + _bindgen_ty_271::visualization_msgs__msg__Marker__DELETE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_271 { + visualization_msgs__msg__Marker__DELETE = 2, +} +pub const visualization_msgs__msg__Marker__DELETEALL: _bindgen_ty_272 = + _bindgen_ty_272::visualization_msgs__msg__Marker__DELETEALL; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_272 { + visualization_msgs__msg__Marker__DELETEALL = 3, +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__UVCoordinate { + pub u: f32, + pub v: f32, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__UVCoordinate() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__UVCoordinate) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__UVCoordinate) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__UVCoordinate), + "::", + stringify!(u) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__UVCoordinate), + "::", + stringify!(v) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__UVCoordinate__Sequence { + pub data: *mut visualization_msgs__msg__UVCoordinate, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__UVCoordinate__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__UVCoordinate__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__UVCoordinate__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__UVCoordinate__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__UVCoordinate__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__UVCoordinate__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__MeshFile { + pub filename: rosidl_runtime_c__String, + pub data: rosidl_runtime_c__uint8__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MeshFile() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(visualization_msgs__msg__MeshFile)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MeshFile) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).filename) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MeshFile), + "::", + stringify!(filename) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MeshFile), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__MeshFile__Sequence { + pub data: *mut visualization_msgs__msg__MeshFile, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MeshFile__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__MeshFile__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MeshFile__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MeshFile__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MeshFile__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MeshFile__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__Marker { + pub header: std_msgs__msg__Header, + pub ns: rosidl_runtime_c__String, + pub id: i32, + pub type_: i32, + pub action: i32, + pub pose: geometry_msgs__msg__Pose, + pub scale: geometry_msgs__msg__Vector3, + pub color: std_msgs__msg__ColorRGBA, + pub lifetime: builtin_interfaces__msg__Duration, + pub frame_locked: bool, + pub points: geometry_msgs__msg__Point__Sequence, + pub colors: std_msgs__msg__ColorRGBA__Sequence, + pub texture_resource: rosidl_runtime_c__String, + pub texture: sensor_msgs__msg__CompressedImage, + pub uv_coordinates: visualization_msgs__msg__UVCoordinate__Sequence, + pub text: rosidl_runtime_c__String, + pub mesh_resource: rosidl_runtime_c__String, + pub mesh_file: visualization_msgs__msg__MeshFile, + pub mesh_use_embedded_materials: bool, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__Marker() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 464usize, + concat!("Size of: ", stringify!(visualization_msgs__msg__Marker)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(visualization_msgs__msg__Marker)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ns) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(ns) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(action) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).scale) as usize - ptr as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(scale) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).color) as usize - ptr as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(color) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).lifetime) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(lifetime) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).frame_locked) as usize - ptr as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(frame_locked) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).points) as usize - ptr as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(points) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).colors) as usize - ptr as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(colors) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).texture_resource) as usize - ptr as usize }, + 232usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(texture_resource) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).texture) as usize - ptr as usize }, + 256usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(texture) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).uv_coordinates) as usize - ptr as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(uv_coordinates) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).text) as usize - ptr as usize }, + 360usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(text) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mesh_resource) as usize - ptr as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(mesh_resource) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mesh_file) as usize - ptr as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(mesh_file) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mesh_use_embedded_materials) as usize - ptr as usize }, + 456usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker), + "::", + stringify!(mesh_use_embedded_materials) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__Marker__Sequence { + pub data: *mut visualization_msgs__msg__Marker, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__Marker__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__Marker__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__Marker__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__Marker__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarkerControl { + pub name: rosidl_runtime_c__String, + pub orientation: geometry_msgs__msg__Quaternion, + pub orientation_mode: u8, + pub interaction_mode: u8, + pub always_visible: bool, + pub markers: visualization_msgs__msg__Marker__Sequence, + pub independent_marker_orientation: bool, + pub description: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerControl() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 120usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).orientation) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(orientation) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).orientation_mode) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(orientation_mode) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).interaction_mode) as usize - ptr as usize }, + 57usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(interaction_mode) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).always_visible) as usize - ptr as usize }, + 58usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(always_visible) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).markers) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(markers) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).independent_marker_orientation) as usize - ptr as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(independent_marker_orientation) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl), + "::", + stringify!(description) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarkerControl__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarkerControl, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerControl__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__msg__InteractiveMarkerControl__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerControl__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarker { + pub header: std_msgs__msg__Header, + pub pose: geometry_msgs__msg__Pose, + pub name: rosidl_runtime_c__String, + pub description: rosidl_runtime_c__String, + pub scale: f32, + pub menu_entries: visualization_msgs__msg__MenuEntry__Sequence, + pub controls: visualization_msgs__msg__InteractiveMarkerControl__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarker() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 192usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarker) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarker) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(description) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).scale) as usize - ptr as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(scale) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).menu_entries) as usize - ptr as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(menu_entries) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).controls) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker), + "::", + stringify!(controls) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarker__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarker, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarker__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarker__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarker__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarker__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE: _bindgen_ty_273 = + _bindgen_ty_273::visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_273 { + visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE = 0, +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE: _bindgen_ty_274 = + _bindgen_ty_274::visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_274 { + visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE = 1, +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT: _bindgen_ty_275 = + _bindgen_ty_275::visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_275 { + visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT = 2, +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK: _bindgen_ty_276 = + _bindgen_ty_276::visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_276 { + visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK = 3, +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN: _bindgen_ty_277 = + _bindgen_ty_277::visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_277 { + visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN = 4, +} +pub const visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP: _bindgen_ty_278 = + _bindgen_ty_278::visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_278 { + visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP = 5, +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarkerFeedback { + pub header: std_msgs__msg__Header, + pub client_id: rosidl_runtime_c__String, + pub marker_name: rosidl_runtime_c__String, + pub control_name: rosidl_runtime_c__String, + pub event_type: u8, + pub pose: geometry_msgs__msg__Pose, + pub menu_entry_id: u32, + pub mouse_point: geometry_msgs__msg__Point, + pub mouse_point_valid: bool, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerFeedback() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 208usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).client_id) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(client_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).marker_name) as usize - ptr as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(marker_name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).control_name) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(control_name) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).event_type) as usize - ptr as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(event_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).menu_entry_id) as usize - ptr as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(menu_entry_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mouse_point) as usize - ptr as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(mouse_point) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mouse_point_valid) as usize - ptr as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback), + "::", + stringify!(mouse_point_valid) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarkerFeedback__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarkerFeedback, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerFeedback__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__msg__InteractiveMarkerFeedback__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerFeedback__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarkerInit { + pub server_id: rosidl_runtime_c__String, + pub seq_num: u64, + pub markers: visualization_msgs__msg__InteractiveMarker__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerInit() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).server_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit), + "::", + stringify!(server_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).seq_num) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit), + "::", + stringify!(seq_num) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).markers) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit), + "::", + stringify!(markers) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarkerInit__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarkerInit, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerInit__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__msg__InteractiveMarkerInit__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerInit__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarkerPose { + pub header: std_msgs__msg__Header, + pub pose: geometry_msgs__msg__Pose, + pub name: rosidl_runtime_c__String, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerPose() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).header) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose), + "::", + stringify!(header) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pose) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose), + "::", + stringify!(pose) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose), + "::", + stringify!(name) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarkerPose__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarkerPose, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerPose__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__msg__InteractiveMarkerPose__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerPose__Sequence), + "::", + stringify!(capacity) + ) + ); +} +pub const visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE: _bindgen_ty_279 = + _bindgen_ty_279::visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_279 { + visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE = 0, +} +pub const visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE: _bindgen_ty_280 = + _bindgen_ty_280::visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE; +#[repr(u32)] +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_280 { + visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE = 1, +} +#[repr(C)] +pub struct visualization_msgs__msg__InteractiveMarkerUpdate { + pub server_id: rosidl_runtime_c__String, + pub seq_num: u64, + pub type_: u8, + pub markers: visualization_msgs__msg__InteractiveMarker__Sequence, + pub poses: visualization_msgs__msg__InteractiveMarkerPose__Sequence, + pub erases: rosidl_runtime_c__String__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerUpdate() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).server_id) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(server_id) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).seq_num) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(seq_num) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).markers) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(markers) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).poses) as usize - ptr as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(poses) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).erases) as usize - ptr as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate), + "::", + stringify!(erases) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__InteractiveMarkerUpdate__Sequence { + pub data: *mut visualization_msgs__msg__InteractiveMarkerUpdate, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerUpdate__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__msg__InteractiveMarkerUpdate__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__InteractiveMarkerUpdate__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__MarkerArray { + pub markers: visualization_msgs__msg__Marker__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MarkerArray() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__MarkerArray) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MarkerArray) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).markers) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MarkerArray), + "::", + stringify!(markers) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__msg__MarkerArray__Sequence { + pub data: *mut visualization_msgs__msg__MarkerArray, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__msg__MarkerArray__Sequence() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__msg__MarkerArray__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__msg__MarkerArray__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MarkerArray__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MarkerArray__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__msg__MarkerArray__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__srv__GetInteractiveMarkers_Request { + pub structure_needs_at_least_one_member: u8, +} +#[test] +fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Request() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 1usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request) + ) + ); + assert_eq!( + unsafe { + ::std::ptr::addr_of!((*ptr).structure_needs_at_least_one_member) as usize - ptr as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request), + "::", + stringify!(structure_needs_at_least_one_member) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence { + pub data: *mut visualization_msgs__srv__GetInteractiveMarkers_Request, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence), + "::", + stringify!(capacity) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__srv__GetInteractiveMarkers_Response { + pub sequence_number: u64, + pub markers: visualization_msgs__msg__InteractiveMarker__Sequence, +} +#[test] +fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Response() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sequence_number) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response), + "::", + stringify!(sequence_number) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).markers) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response), + "::", + stringify!(markers) + ) + ); +} +#[repr(C)] +#[derive(Debug)] +pub struct visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence { + pub data: *mut visualization_msgs__srv__GetInteractiveMarkers_Response, + pub size: usize, + pub capacity: usize, +} +#[test] +fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence() { + const UNINIT: ::std::mem::MaybeUninit< + visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence, + > = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).capacity) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence), + "::", + stringify!(capacity) + ) + ); +} +extern "C" { + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalInfo( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatus( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatusArray( + ) -> *const rosidl_message_type_support_t; + pub fn action_msgs__msg__GoalInfo__create() -> *mut action_msgs__msg__GoalInfo; + pub fn action_msgs__msg__GoalInfo__destroy(msg: *mut action_msgs__msg__GoalInfo); + pub fn action_msgs__msg__GoalInfo__Sequence__init( + array: *mut action_msgs__msg__GoalInfo__Sequence, + size: usize, + ) -> bool; + pub fn action_msgs__msg__GoalInfo__Sequence__fini( + array: *mut action_msgs__msg__GoalInfo__Sequence, + ); + pub fn action_msgs__msg__GoalInfo__Sequence__create( + size: usize, + ) -> *mut action_msgs__msg__GoalInfo__Sequence; + pub fn action_msgs__msg__GoalInfo__Sequence__destroy( + array: *mut action_msgs__msg__GoalInfo__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalInfo( + ) -> *const rosidl_message_type_support_t; + pub fn action_msgs__msg__GoalStatus__create() -> *mut action_msgs__msg__GoalStatus; + pub fn action_msgs__msg__GoalStatus__destroy(msg: *mut action_msgs__msg__GoalStatus); + pub fn action_msgs__msg__GoalStatus__Sequence__init( + array: *mut action_msgs__msg__GoalStatus__Sequence, + size: usize, + ) -> bool; + pub fn action_msgs__msg__GoalStatus__Sequence__fini( + array: *mut action_msgs__msg__GoalStatus__Sequence, + ); + pub fn action_msgs__msg__GoalStatus__Sequence__create( + size: usize, + ) -> *mut action_msgs__msg__GoalStatus__Sequence; + pub fn action_msgs__msg__GoalStatus__Sequence__destroy( + array: *mut action_msgs__msg__GoalStatus__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalStatus( + ) -> *const rosidl_message_type_support_t; + pub fn action_msgs__msg__GoalStatusArray__create() -> *mut action_msgs__msg__GoalStatusArray; + pub fn action_msgs__msg__GoalStatusArray__destroy(msg: *mut action_msgs__msg__GoalStatusArray); + pub fn action_msgs__msg__GoalStatusArray__Sequence__init( + array: *mut action_msgs__msg__GoalStatusArray__Sequence, + size: usize, + ) -> bool; + pub fn action_msgs__msg__GoalStatusArray__Sequence__fini( + array: *mut action_msgs__msg__GoalStatusArray__Sequence, + ); + pub fn action_msgs__msg__GoalStatusArray__Sequence__create( + size: usize, + ) -> *mut action_msgs__msg__GoalStatusArray__Sequence; + pub fn action_msgs__msg__GoalStatusArray__Sequence__destroy( + array: *mut action_msgs__msg__GoalStatusArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalStatusArray( + ) -> *const rosidl_message_type_support_t; + pub fn action_msgs__srv__CancelGoal_Request__create( + ) -> *mut action_msgs__srv__CancelGoal_Request; + pub fn action_msgs__srv__CancelGoal_Request__destroy( + msg: *mut action_msgs__srv__CancelGoal_Request, + ); + pub fn action_msgs__srv__CancelGoal_Request__Sequence__init( + array: *mut action_msgs__srv__CancelGoal_Request__Sequence, + size: usize, + ) -> bool; + pub fn action_msgs__srv__CancelGoal_Request__Sequence__fini( + array: *mut action_msgs__srv__CancelGoal_Request__Sequence, + ); + pub fn action_msgs__srv__CancelGoal_Request__Sequence__create( + size: usize, + ) -> *mut action_msgs__srv__CancelGoal_Request__Sequence; + pub fn action_msgs__srv__CancelGoal_Request__Sequence__destroy( + array: *mut action_msgs__srv__CancelGoal_Request__Sequence, + ); + pub fn action_msgs__srv__CancelGoal_Response__create( + ) -> *mut action_msgs__srv__CancelGoal_Response; + pub fn action_msgs__srv__CancelGoal_Response__destroy( + msg: *mut action_msgs__srv__CancelGoal_Response, + ); + pub fn action_msgs__srv__CancelGoal_Response__Sequence__init( + array: *mut action_msgs__srv__CancelGoal_Response__Sequence, + size: usize, + ) -> bool; + pub fn action_msgs__srv__CancelGoal_Response__Sequence__fini( + array: *mut action_msgs__srv__CancelGoal_Response__Sequence, + ); + pub fn action_msgs__srv__CancelGoal_Response__Sequence__create( + size: usize, + ) -> *mut action_msgs__srv__CancelGoal_Response__Sequence; + pub fn action_msgs__srv__CancelGoal_Response__Sequence__destroy( + array: *mut action_msgs__srv__CancelGoal_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__action_msgs__srv__CancelGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__action_msgs__srv__CancelGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Duration( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Time( + ) -> *const rosidl_message_type_support_t; + pub fn builtin_interfaces__msg__Duration__create() -> *mut builtin_interfaces__msg__Duration; + pub fn builtin_interfaces__msg__Duration__destroy(msg: *mut builtin_interfaces__msg__Duration); + pub fn builtin_interfaces__msg__Duration__Sequence__init( + array: *mut builtin_interfaces__msg__Duration__Sequence, + size: usize, + ) -> bool; + pub fn builtin_interfaces__msg__Duration__Sequence__fini( + array: *mut builtin_interfaces__msg__Duration__Sequence, + ); + pub fn builtin_interfaces__msg__Duration__Sequence__create( + size: usize, + ) -> *mut builtin_interfaces__msg__Duration__Sequence; + pub fn builtin_interfaces__msg__Duration__Sequence__destroy( + array: *mut builtin_interfaces__msg__Duration__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__builtin_interfaces__msg__Duration( + ) -> *const rosidl_message_type_support_t; + pub fn builtin_interfaces__msg__Time__create() -> *mut builtin_interfaces__msg__Time; + pub fn builtin_interfaces__msg__Time__destroy(msg: *mut builtin_interfaces__msg__Time); + pub fn builtin_interfaces__msg__Time__Sequence__init( + array: *mut builtin_interfaces__msg__Time__Sequence, + size: usize, + ) -> bool; + pub fn builtin_interfaces__msg__Time__Sequence__fini( + array: *mut builtin_interfaces__msg__Time__Sequence, + ); + pub fn builtin_interfaces__msg__Time__Sequence__create( + size: usize, + ) -> *mut builtin_interfaces__msg__Time__Sequence; + pub fn builtin_interfaces__msg__Time__Sequence__destroy( + array: *mut builtin_interfaces__msg__Time__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__builtin_interfaces__msg__Time( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticStatus( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__KeyValue( + ) -> *const rosidl_message_type_support_t; + pub fn diagnostic_msgs__msg__DiagnosticArray__create( + ) -> *mut diagnostic_msgs__msg__DiagnosticArray; + pub fn diagnostic_msgs__msg__DiagnosticArray__destroy( + msg: *mut diagnostic_msgs__msg__DiagnosticArray, + ); + pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__init( + array: *mut diagnostic_msgs__msg__DiagnosticArray__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__fini( + array: *mut diagnostic_msgs__msg__DiagnosticArray__Sequence, + ); + pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__msg__DiagnosticArray__Sequence; + pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__destroy( + array: *mut diagnostic_msgs__msg__DiagnosticArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticArray( + ) -> *const rosidl_message_type_support_t; + pub fn diagnostic_msgs__msg__DiagnosticStatus__create( + ) -> *mut diagnostic_msgs__msg__DiagnosticStatus; + pub fn diagnostic_msgs__msg__DiagnosticStatus__destroy( + msg: *mut diagnostic_msgs__msg__DiagnosticStatus, + ); + pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__init( + array: *mut diagnostic_msgs__msg__DiagnosticStatus__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__fini( + array: *mut diagnostic_msgs__msg__DiagnosticStatus__Sequence, + ); + pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__msg__DiagnosticStatus__Sequence; + pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__destroy( + array: *mut diagnostic_msgs__msg__DiagnosticStatus__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticStatus( + ) -> *const rosidl_message_type_support_t; + pub fn diagnostic_msgs__msg__KeyValue__create() -> *mut diagnostic_msgs__msg__KeyValue; + pub fn diagnostic_msgs__msg__KeyValue__destroy(msg: *mut diagnostic_msgs__msg__KeyValue); + pub fn diagnostic_msgs__msg__KeyValue__Sequence__init( + array: *mut diagnostic_msgs__msg__KeyValue__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__msg__KeyValue__Sequence__fini( + array: *mut diagnostic_msgs__msg__KeyValue__Sequence, + ); + pub fn diagnostic_msgs__msg__KeyValue__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__msg__KeyValue__Sequence; + pub fn diagnostic_msgs__msg__KeyValue__Sequence__destroy( + array: *mut diagnostic_msgs__msg__KeyValue__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__KeyValue( + ) -> *const rosidl_message_type_support_t; + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__create( + ) -> *mut diagnostic_msgs__srv__AddDiagnostics_Request; + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__destroy( + msg: *mut diagnostic_msgs__srv__AddDiagnostics_Request, + ); + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__init( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__fini( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence, + ); + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence; + pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__destroy( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence, + ); + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__create( + ) -> *mut diagnostic_msgs__srv__AddDiagnostics_Response; + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__destroy( + msg: *mut diagnostic_msgs__srv__AddDiagnostics_Response, + ); + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__init( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__fini( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence, + ); + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence; + pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__destroy( + array: *mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__diagnostic_msgs__srv__AddDiagnostics( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__diagnostic_msgs__srv__AddDiagnostics( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__diagnostic_msgs__srv__SelfTest( + ) -> *const rosidl_service_type_support_t; + pub fn diagnostic_msgs__srv__SelfTest_Request__create( + ) -> *mut diagnostic_msgs__srv__SelfTest_Request; + pub fn diagnostic_msgs__srv__SelfTest_Request__destroy( + msg: *mut diagnostic_msgs__srv__SelfTest_Request, + ); + pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__init( + array: *mut diagnostic_msgs__srv__SelfTest_Request__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__fini( + array: *mut diagnostic_msgs__srv__SelfTest_Request__Sequence, + ); + pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__srv__SelfTest_Request__Sequence; + pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__destroy( + array: *mut diagnostic_msgs__srv__SelfTest_Request__Sequence, + ); + pub fn diagnostic_msgs__srv__SelfTest_Response__create( + ) -> *mut diagnostic_msgs__srv__SelfTest_Response; + pub fn diagnostic_msgs__srv__SelfTest_Response__destroy( + msg: *mut diagnostic_msgs__srv__SelfTest_Response, + ); + pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__init( + array: *mut diagnostic_msgs__srv__SelfTest_Response__Sequence, + size: usize, + ) -> bool; + pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__fini( + array: *mut diagnostic_msgs__srv__SelfTest_Response__Sequence, + ); + pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__create( + size: usize, + ) -> *mut diagnostic_msgs__srv__SelfTest_Response__Sequence; + pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__destroy( + array: *mut diagnostic_msgs__srv__SelfTest_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__diagnostic_msgs__srv__SelfTest( + ) -> *const rosidl_service_type_support_t; + pub fn geometry_msgs__msg__Accel__create() -> *mut geometry_msgs__msg__Accel; + pub fn geometry_msgs__msg__Accel__destroy(msg: *mut geometry_msgs__msg__Accel); + pub fn geometry_msgs__msg__Accel__Sequence__init( + array: *mut geometry_msgs__msg__Accel__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Accel__Sequence__fini( + array: *mut geometry_msgs__msg__Accel__Sequence, + ); + pub fn geometry_msgs__msg__Accel__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Accel__Sequence; + pub fn geometry_msgs__msg__Accel__Sequence__destroy( + array: *mut geometry_msgs__msg__Accel__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Accel( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__AccelStamped__create() -> *mut geometry_msgs__msg__AccelStamped; + pub fn geometry_msgs__msg__AccelStamped__destroy(msg: *mut geometry_msgs__msg__AccelStamped); + pub fn geometry_msgs__msg__AccelStamped__Sequence__init( + array: *mut geometry_msgs__msg__AccelStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__AccelStamped__Sequence__fini( + array: *mut geometry_msgs__msg__AccelStamped__Sequence, + ); + pub fn geometry_msgs__msg__AccelStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__AccelStamped__Sequence; + pub fn geometry_msgs__msg__AccelStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__AccelStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__AccelWithCovariance__create( + ) -> *mut geometry_msgs__msg__AccelWithCovariance; + pub fn geometry_msgs__msg__AccelWithCovariance__destroy( + msg: *mut geometry_msgs__msg__AccelWithCovariance, + ); + pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__init( + array: *mut geometry_msgs__msg__AccelWithCovariance__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__fini( + array: *mut geometry_msgs__msg__AccelWithCovariance__Sequence, + ); + pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__AccelWithCovariance__Sequence; + pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__destroy( + array: *mut geometry_msgs__msg__AccelWithCovariance__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__create( + ) -> *mut geometry_msgs__msg__AccelWithCovarianceStamped; + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__destroy( + msg: *mut geometry_msgs__msg__AccelWithCovarianceStamped, + ); + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__init( + array: *mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__fini( + array: *mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence, + ); + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence; + pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Accel( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Inertia( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__InertiaStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point32( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PointStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Polygon( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PolygonStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose2D( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Quaternion( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__QuaternionStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Transform( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TransformStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Twist( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3Stamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Wrench( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__WrenchStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Inertia__create() -> *mut geometry_msgs__msg__Inertia; + pub fn geometry_msgs__msg__Inertia__destroy(msg: *mut geometry_msgs__msg__Inertia); + pub fn geometry_msgs__msg__Inertia__Sequence__init( + array: *mut geometry_msgs__msg__Inertia__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Inertia__Sequence__fini( + array: *mut geometry_msgs__msg__Inertia__Sequence, + ); + pub fn geometry_msgs__msg__Inertia__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Inertia__Sequence; + pub fn geometry_msgs__msg__Inertia__Sequence__destroy( + array: *mut geometry_msgs__msg__Inertia__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Inertia( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__InertiaStamped__create() -> *mut geometry_msgs__msg__InertiaStamped; + pub fn geometry_msgs__msg__InertiaStamped__destroy( + msg: *mut geometry_msgs__msg__InertiaStamped, + ); + pub fn geometry_msgs__msg__InertiaStamped__Sequence__init( + array: *mut geometry_msgs__msg__InertiaStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__InertiaStamped__Sequence__fini( + array: *mut geometry_msgs__msg__InertiaStamped__Sequence, + ); + pub fn geometry_msgs__msg__InertiaStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__InertiaStamped__Sequence; + pub fn geometry_msgs__msg__InertiaStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__InertiaStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__InertiaStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Point__create() -> *mut geometry_msgs__msg__Point; + pub fn geometry_msgs__msg__Point__destroy(msg: *mut geometry_msgs__msg__Point); + pub fn geometry_msgs__msg__Point__Sequence__init( + array: *mut geometry_msgs__msg__Point__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Point__Sequence__fini( + array: *mut geometry_msgs__msg__Point__Sequence, + ); + pub fn geometry_msgs__msg__Point__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Point__Sequence; + pub fn geometry_msgs__msg__Point__Sequence__destroy( + array: *mut geometry_msgs__msg__Point__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Point( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Point32__create() -> *mut geometry_msgs__msg__Point32; + pub fn geometry_msgs__msg__Point32__destroy(msg: *mut geometry_msgs__msg__Point32); + pub fn geometry_msgs__msg__Point32__Sequence__init( + array: *mut geometry_msgs__msg__Point32__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Point32__Sequence__fini( + array: *mut geometry_msgs__msg__Point32__Sequence, + ); + pub fn geometry_msgs__msg__Point32__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Point32__Sequence; + pub fn geometry_msgs__msg__Point32__Sequence__destroy( + array: *mut geometry_msgs__msg__Point32__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Point32( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PointStamped__create() -> *mut geometry_msgs__msg__PointStamped; + pub fn geometry_msgs__msg__PointStamped__destroy(msg: *mut geometry_msgs__msg__PointStamped); + pub fn geometry_msgs__msg__PointStamped__Sequence__init( + array: *mut geometry_msgs__msg__PointStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PointStamped__Sequence__fini( + array: *mut geometry_msgs__msg__PointStamped__Sequence, + ); + pub fn geometry_msgs__msg__PointStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PointStamped__Sequence; + pub fn geometry_msgs__msg__PointStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__PointStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PointStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Polygon__create() -> *mut geometry_msgs__msg__Polygon; + pub fn geometry_msgs__msg__Polygon__destroy(msg: *mut geometry_msgs__msg__Polygon); + pub fn geometry_msgs__msg__Polygon__Sequence__init( + array: *mut geometry_msgs__msg__Polygon__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Polygon__Sequence__fini( + array: *mut geometry_msgs__msg__Polygon__Sequence, + ); + pub fn geometry_msgs__msg__Polygon__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Polygon__Sequence; + pub fn geometry_msgs__msg__Polygon__Sequence__destroy( + array: *mut geometry_msgs__msg__Polygon__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Polygon( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PolygonStamped__create() -> *mut geometry_msgs__msg__PolygonStamped; + pub fn geometry_msgs__msg__PolygonStamped__destroy( + msg: *mut geometry_msgs__msg__PolygonStamped, + ); + pub fn geometry_msgs__msg__PolygonStamped__Sequence__init( + array: *mut geometry_msgs__msg__PolygonStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PolygonStamped__Sequence__fini( + array: *mut geometry_msgs__msg__PolygonStamped__Sequence, + ); + pub fn geometry_msgs__msg__PolygonStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PolygonStamped__Sequence; + pub fn geometry_msgs__msg__PolygonStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__PolygonStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PolygonStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Pose__create() -> *mut geometry_msgs__msg__Pose; + pub fn geometry_msgs__msg__Pose__destroy(msg: *mut geometry_msgs__msg__Pose); + pub fn geometry_msgs__msg__Pose__Sequence__init( + array: *mut geometry_msgs__msg__Pose__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Pose__Sequence__fini(array: *mut geometry_msgs__msg__Pose__Sequence); + pub fn geometry_msgs__msg__Pose__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Pose__Sequence; + pub fn geometry_msgs__msg__Pose__Sequence__destroy( + array: *mut geometry_msgs__msg__Pose__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Pose( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Pose2D__create() -> *mut geometry_msgs__msg__Pose2D; + pub fn geometry_msgs__msg__Pose2D__destroy(msg: *mut geometry_msgs__msg__Pose2D); + pub fn geometry_msgs__msg__Pose2D__Sequence__init( + array: *mut geometry_msgs__msg__Pose2D__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Pose2D__Sequence__fini( + array: *mut geometry_msgs__msg__Pose2D__Sequence, + ); + pub fn geometry_msgs__msg__Pose2D__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Pose2D__Sequence; + pub fn geometry_msgs__msg__Pose2D__Sequence__destroy( + array: *mut geometry_msgs__msg__Pose2D__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Pose2D( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PoseArray__create() -> *mut geometry_msgs__msg__PoseArray; + pub fn geometry_msgs__msg__PoseArray__destroy(msg: *mut geometry_msgs__msg__PoseArray); + pub fn geometry_msgs__msg__PoseArray__Sequence__init( + array: *mut geometry_msgs__msg__PoseArray__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PoseArray__Sequence__fini( + array: *mut geometry_msgs__msg__PoseArray__Sequence, + ); + pub fn geometry_msgs__msg__PoseArray__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PoseArray__Sequence; + pub fn geometry_msgs__msg__PoseArray__Sequence__destroy( + array: *mut geometry_msgs__msg__PoseArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseArray( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PoseStamped__create() -> *mut geometry_msgs__msg__PoseStamped; + pub fn geometry_msgs__msg__PoseStamped__destroy(msg: *mut geometry_msgs__msg__PoseStamped); + pub fn geometry_msgs__msg__PoseStamped__Sequence__init( + array: *mut geometry_msgs__msg__PoseStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PoseStamped__Sequence__fini( + array: *mut geometry_msgs__msg__PoseStamped__Sequence, + ); + pub fn geometry_msgs__msg__PoseStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PoseStamped__Sequence; + pub fn geometry_msgs__msg__PoseStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__PoseStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PoseWithCovariance__create( + ) -> *mut geometry_msgs__msg__PoseWithCovariance; + pub fn geometry_msgs__msg__PoseWithCovariance__destroy( + msg: *mut geometry_msgs__msg__PoseWithCovariance, + ); + pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__init( + array: *mut geometry_msgs__msg__PoseWithCovariance__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__fini( + array: *mut geometry_msgs__msg__PoseWithCovariance__Sequence, + ); + pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PoseWithCovariance__Sequence; + pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__destroy( + array: *mut geometry_msgs__msg__PoseWithCovariance__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__create( + ) -> *mut geometry_msgs__msg__PoseWithCovarianceStamped; + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__destroy( + msg: *mut geometry_msgs__msg__PoseWithCovarianceStamped, + ); + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__init( + array: *mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__fini( + array: *mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence, + ); + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence; + pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Quaternion__create() -> *mut geometry_msgs__msg__Quaternion; + pub fn geometry_msgs__msg__Quaternion__destroy(msg: *mut geometry_msgs__msg__Quaternion); + pub fn geometry_msgs__msg__Quaternion__Sequence__init( + array: *mut geometry_msgs__msg__Quaternion__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Quaternion__Sequence__fini( + array: *mut geometry_msgs__msg__Quaternion__Sequence, + ); + pub fn geometry_msgs__msg__Quaternion__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Quaternion__Sequence; + pub fn geometry_msgs__msg__Quaternion__Sequence__destroy( + array: *mut geometry_msgs__msg__Quaternion__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Quaternion( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__QuaternionStamped__create( + ) -> *mut geometry_msgs__msg__QuaternionStamped; + pub fn geometry_msgs__msg__QuaternionStamped__destroy( + msg: *mut geometry_msgs__msg__QuaternionStamped, + ); + pub fn geometry_msgs__msg__QuaternionStamped__Sequence__init( + array: *mut geometry_msgs__msg__QuaternionStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__QuaternionStamped__Sequence__fini( + array: *mut geometry_msgs__msg__QuaternionStamped__Sequence, + ); + pub fn geometry_msgs__msg__QuaternionStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__QuaternionStamped__Sequence; + pub fn geometry_msgs__msg__QuaternionStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__QuaternionStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__QuaternionStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Transform__create() -> *mut geometry_msgs__msg__Transform; + pub fn geometry_msgs__msg__Transform__destroy(msg: *mut geometry_msgs__msg__Transform); + pub fn geometry_msgs__msg__Transform__Sequence__init( + array: *mut geometry_msgs__msg__Transform__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Transform__Sequence__fini( + array: *mut geometry_msgs__msg__Transform__Sequence, + ); + pub fn geometry_msgs__msg__Transform__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Transform__Sequence; + pub fn geometry_msgs__msg__Transform__Sequence__destroy( + array: *mut geometry_msgs__msg__Transform__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Transform( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__TransformStamped__create( + ) -> *mut geometry_msgs__msg__TransformStamped; + pub fn geometry_msgs__msg__TransformStamped__destroy( + msg: *mut geometry_msgs__msg__TransformStamped, + ); + pub fn geometry_msgs__msg__TransformStamped__Sequence__init( + array: *mut geometry_msgs__msg__TransformStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__TransformStamped__Sequence__fini( + array: *mut geometry_msgs__msg__TransformStamped__Sequence, + ); + pub fn geometry_msgs__msg__TransformStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__TransformStamped__Sequence; + pub fn geometry_msgs__msg__TransformStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__TransformStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TransformStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Twist__create() -> *mut geometry_msgs__msg__Twist; + pub fn geometry_msgs__msg__Twist__destroy(msg: *mut geometry_msgs__msg__Twist); + pub fn geometry_msgs__msg__Twist__Sequence__init( + array: *mut geometry_msgs__msg__Twist__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Twist__Sequence__fini( + array: *mut geometry_msgs__msg__Twist__Sequence, + ); + pub fn geometry_msgs__msg__Twist__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Twist__Sequence; + pub fn geometry_msgs__msg__Twist__Sequence__destroy( + array: *mut geometry_msgs__msg__Twist__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Twist( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__TwistStamped__create() -> *mut geometry_msgs__msg__TwistStamped; + pub fn geometry_msgs__msg__TwistStamped__destroy(msg: *mut geometry_msgs__msg__TwistStamped); + pub fn geometry_msgs__msg__TwistStamped__Sequence__init( + array: *mut geometry_msgs__msg__TwistStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__TwistStamped__Sequence__fini( + array: *mut geometry_msgs__msg__TwistStamped__Sequence, + ); + pub fn geometry_msgs__msg__TwistStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__TwistStamped__Sequence; + pub fn geometry_msgs__msg__TwistStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__TwistStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__TwistWithCovariance__create( + ) -> *mut geometry_msgs__msg__TwistWithCovariance; + pub fn geometry_msgs__msg__TwistWithCovariance__destroy( + msg: *mut geometry_msgs__msg__TwistWithCovariance, + ); + pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__init( + array: *mut geometry_msgs__msg__TwistWithCovariance__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__fini( + array: *mut geometry_msgs__msg__TwistWithCovariance__Sequence, + ); + pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__TwistWithCovariance__Sequence; + pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__destroy( + array: *mut geometry_msgs__msg__TwistWithCovariance__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovariance( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__create( + ) -> *mut geometry_msgs__msg__TwistWithCovarianceStamped; + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__destroy( + msg: *mut geometry_msgs__msg__TwistWithCovarianceStamped, + ); + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__init( + array: *mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__fini( + array: *mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence, + ); + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence; + pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovarianceStamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Vector3__create() -> *mut geometry_msgs__msg__Vector3; + pub fn geometry_msgs__msg__Vector3__destroy(msg: *mut geometry_msgs__msg__Vector3); + pub fn geometry_msgs__msg__Vector3__Sequence__init( + array: *mut geometry_msgs__msg__Vector3__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Vector3__Sequence__fini( + array: *mut geometry_msgs__msg__Vector3__Sequence, + ); + pub fn geometry_msgs__msg__Vector3__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Vector3__Sequence; + pub fn geometry_msgs__msg__Vector3__Sequence__destroy( + array: *mut geometry_msgs__msg__Vector3__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Vector3( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Vector3Stamped__create() -> *mut geometry_msgs__msg__Vector3Stamped; + pub fn geometry_msgs__msg__Vector3Stamped__destroy( + msg: *mut geometry_msgs__msg__Vector3Stamped, + ); + pub fn geometry_msgs__msg__Vector3Stamped__Sequence__init( + array: *mut geometry_msgs__msg__Vector3Stamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Vector3Stamped__Sequence__fini( + array: *mut geometry_msgs__msg__Vector3Stamped__Sequence, + ); + pub fn geometry_msgs__msg__Vector3Stamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Vector3Stamped__Sequence; + pub fn geometry_msgs__msg__Vector3Stamped__Sequence__destroy( + array: *mut geometry_msgs__msg__Vector3Stamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Vector3Stamped( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__Wrench__create() -> *mut geometry_msgs__msg__Wrench; + pub fn geometry_msgs__msg__Wrench__destroy(msg: *mut geometry_msgs__msg__Wrench); + pub fn geometry_msgs__msg__Wrench__Sequence__init( + array: *mut geometry_msgs__msg__Wrench__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__Wrench__Sequence__fini( + array: *mut geometry_msgs__msg__Wrench__Sequence, + ); + pub fn geometry_msgs__msg__Wrench__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__Wrench__Sequence; + pub fn geometry_msgs__msg__Wrench__Sequence__destroy( + array: *mut geometry_msgs__msg__Wrench__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Wrench( + ) -> *const rosidl_message_type_support_t; + pub fn geometry_msgs__msg__WrenchStamped__create() -> *mut geometry_msgs__msg__WrenchStamped; + pub fn geometry_msgs__msg__WrenchStamped__destroy(msg: *mut geometry_msgs__msg__WrenchStamped); + pub fn geometry_msgs__msg__WrenchStamped__Sequence__init( + array: *mut geometry_msgs__msg__WrenchStamped__Sequence, + size: usize, + ) -> bool; + pub fn geometry_msgs__msg__WrenchStamped__Sequence__fini( + array: *mut geometry_msgs__msg__WrenchStamped__Sequence, + ); + pub fn geometry_msgs__msg__WrenchStamped__Sequence__create( + size: usize, + ) -> *mut geometry_msgs__msg__WrenchStamped__Sequence; + pub fn geometry_msgs__msg__WrenchStamped__Sequence__destroy( + array: *mut geometry_msgs__msg__WrenchStamped__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__WrenchStamped( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__State( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__Transition( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionDescription( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionEvent( + ) -> *const rosidl_message_type_support_t; + pub fn lifecycle_msgs__msg__State__create() -> *mut lifecycle_msgs__msg__State; + pub fn lifecycle_msgs__msg__State__destroy(msg: *mut lifecycle_msgs__msg__State); + pub fn lifecycle_msgs__msg__State__Sequence__init( + array: *mut lifecycle_msgs__msg__State__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__msg__State__Sequence__fini( + array: *mut lifecycle_msgs__msg__State__Sequence, + ); + pub fn lifecycle_msgs__msg__State__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__msg__State__Sequence; + pub fn lifecycle_msgs__msg__State__Sequence__destroy( + array: *mut lifecycle_msgs__msg__State__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__State( + ) -> *const rosidl_message_type_support_t; + pub fn lifecycle_msgs__msg__Transition__create() -> *mut lifecycle_msgs__msg__Transition; + pub fn lifecycle_msgs__msg__Transition__destroy(msg: *mut lifecycle_msgs__msg__Transition); + pub fn lifecycle_msgs__msg__Transition__Sequence__init( + array: *mut lifecycle_msgs__msg__Transition__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__msg__Transition__Sequence__fini( + array: *mut lifecycle_msgs__msg__Transition__Sequence, + ); + pub fn lifecycle_msgs__msg__Transition__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__msg__Transition__Sequence; + pub fn lifecycle_msgs__msg__Transition__Sequence__destroy( + array: *mut lifecycle_msgs__msg__Transition__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__Transition( + ) -> *const rosidl_message_type_support_t; + pub fn lifecycle_msgs__msg__TransitionDescription__create( + ) -> *mut lifecycle_msgs__msg__TransitionDescription; + pub fn lifecycle_msgs__msg__TransitionDescription__destroy( + msg: *mut lifecycle_msgs__msg__TransitionDescription, + ); + pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__init( + array: *mut lifecycle_msgs__msg__TransitionDescription__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__fini( + array: *mut lifecycle_msgs__msg__TransitionDescription__Sequence, + ); + pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__msg__TransitionDescription__Sequence; + pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__destroy( + array: *mut lifecycle_msgs__msg__TransitionDescription__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionDescription( + ) -> *const rosidl_message_type_support_t; + pub fn lifecycle_msgs__msg__TransitionEvent__create( + ) -> *mut lifecycle_msgs__msg__TransitionEvent; + pub fn lifecycle_msgs__msg__TransitionEvent__destroy( + msg: *mut lifecycle_msgs__msg__TransitionEvent, + ); + pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__init( + array: *mut lifecycle_msgs__msg__TransitionEvent__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__fini( + array: *mut lifecycle_msgs__msg__TransitionEvent__Sequence, + ); + pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__msg__TransitionEvent__Sequence; + pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__destroy( + array: *mut lifecycle_msgs__msg__TransitionEvent__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionEvent( + ) -> *const rosidl_message_type_support_t; + pub fn lifecycle_msgs__srv__ChangeState_Request__create( + ) -> *mut lifecycle_msgs__srv__ChangeState_Request; + pub fn lifecycle_msgs__srv__ChangeState_Request__destroy( + msg: *mut lifecycle_msgs__srv__ChangeState_Request, + ); + pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__init( + array: *mut lifecycle_msgs__srv__ChangeState_Request__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__fini( + array: *mut lifecycle_msgs__srv__ChangeState_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__ChangeState_Request__Sequence; + pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__destroy( + array: *mut lifecycle_msgs__srv__ChangeState_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__ChangeState_Response__create( + ) -> *mut lifecycle_msgs__srv__ChangeState_Response; + pub fn lifecycle_msgs__srv__ChangeState_Response__destroy( + msg: *mut lifecycle_msgs__srv__ChangeState_Response, + ); + pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__init( + array: *mut lifecycle_msgs__srv__ChangeState_Response__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__fini( + array: *mut lifecycle_msgs__srv__ChangeState_Response__Sequence, + ); + pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__ChangeState_Response__Sequence; + pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__destroy( + array: *mut lifecycle_msgs__srv__ChangeState_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__ChangeState( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__ChangeState( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableStates( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetState( + ) -> *const rosidl_service_type_support_t; + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__create( + ) -> *mut lifecycle_msgs__srv__GetAvailableStates_Request; + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__destroy( + msg: *mut lifecycle_msgs__srv__GetAvailableStates_Request, + ); + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__init( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence; + pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__create( + ) -> *mut lifecycle_msgs__srv__GetAvailableStates_Response; + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__destroy( + msg: *mut lifecycle_msgs__srv__GetAvailableStates_Response, + ); + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__init( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence; + pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableStates( + ) -> *const rosidl_service_type_support_t; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__create( + ) -> *mut lifecycle_msgs__srv__GetAvailableTransitions_Request; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__destroy( + msg: *mut lifecycle_msgs__srv__GetAvailableTransitions_Request, + ); + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__init( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__create( + ) -> *mut lifecycle_msgs__srv__GetAvailableTransitions_Response; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__destroy( + msg: *mut lifecycle_msgs__srv__GetAvailableTransitions_Response, + ); + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__init( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence, + ); + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence; + pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions( + ) -> *const rosidl_service_type_support_t; + pub fn lifecycle_msgs__srv__GetState_Request__create( + ) -> *mut lifecycle_msgs__srv__GetState_Request; + pub fn lifecycle_msgs__srv__GetState_Request__destroy( + msg: *mut lifecycle_msgs__srv__GetState_Request, + ); + pub fn lifecycle_msgs__srv__GetState_Request__Sequence__init( + array: *mut lifecycle_msgs__srv__GetState_Request__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetState_Request__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetState_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetState_Request__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetState_Request__Sequence; + pub fn lifecycle_msgs__srv__GetState_Request__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetState_Request__Sequence, + ); + pub fn lifecycle_msgs__srv__GetState_Response__create( + ) -> *mut lifecycle_msgs__srv__GetState_Response; + pub fn lifecycle_msgs__srv__GetState_Response__destroy( + msg: *mut lifecycle_msgs__srv__GetState_Response, + ); + pub fn lifecycle_msgs__srv__GetState_Response__Sequence__init( + array: *mut lifecycle_msgs__srv__GetState_Response__Sequence, + size: usize, + ) -> bool; + pub fn lifecycle_msgs__srv__GetState_Response__Sequence__fini( + array: *mut lifecycle_msgs__srv__GetState_Response__Sequence, + ); + pub fn lifecycle_msgs__srv__GetState_Response__Sequence__create( + size: usize, + ) -> *mut lifecycle_msgs__srv__GetState_Response__Sequence; + pub fn lifecycle_msgs__srv__GetState_Response__Sequence__destroy( + array: *mut lifecycle_msgs__srv__GetState_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetState( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__GridCells( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__MapMetaData( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__OccupancyGrid( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Odometry( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Path( + ) -> *const rosidl_message_type_support_t; + pub fn nav_msgs__msg__GridCells__create() -> *mut nav_msgs__msg__GridCells; + pub fn nav_msgs__msg__GridCells__destroy(msg: *mut nav_msgs__msg__GridCells); + pub fn nav_msgs__msg__GridCells__Sequence__init( + array: *mut nav_msgs__msg__GridCells__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__msg__GridCells__Sequence__fini(array: *mut nav_msgs__msg__GridCells__Sequence); + pub fn nav_msgs__msg__GridCells__Sequence__create( + size: usize, + ) -> *mut nav_msgs__msg__GridCells__Sequence; + pub fn nav_msgs__msg__GridCells__Sequence__destroy( + array: *mut nav_msgs__msg__GridCells__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__GridCells( + ) -> *const rosidl_message_type_support_t; + pub fn nav_msgs__msg__MapMetaData__create() -> *mut nav_msgs__msg__MapMetaData; + pub fn nav_msgs__msg__MapMetaData__destroy(msg: *mut nav_msgs__msg__MapMetaData); + pub fn nav_msgs__msg__MapMetaData__Sequence__init( + array: *mut nav_msgs__msg__MapMetaData__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__msg__MapMetaData__Sequence__fini( + array: *mut nav_msgs__msg__MapMetaData__Sequence, + ); + pub fn nav_msgs__msg__MapMetaData__Sequence__create( + size: usize, + ) -> *mut nav_msgs__msg__MapMetaData__Sequence; + pub fn nav_msgs__msg__MapMetaData__Sequence__destroy( + array: *mut nav_msgs__msg__MapMetaData__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__MapMetaData( + ) -> *const rosidl_message_type_support_t; + pub fn nav_msgs__msg__OccupancyGrid__create() -> *mut nav_msgs__msg__OccupancyGrid; + pub fn nav_msgs__msg__OccupancyGrid__destroy(msg: *mut nav_msgs__msg__OccupancyGrid); + pub fn nav_msgs__msg__OccupancyGrid__Sequence__init( + array: *mut nav_msgs__msg__OccupancyGrid__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__msg__OccupancyGrid__Sequence__fini( + array: *mut nav_msgs__msg__OccupancyGrid__Sequence, + ); + pub fn nav_msgs__msg__OccupancyGrid__Sequence__create( + size: usize, + ) -> *mut nav_msgs__msg__OccupancyGrid__Sequence; + pub fn nav_msgs__msg__OccupancyGrid__Sequence__destroy( + array: *mut nav_msgs__msg__OccupancyGrid__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__OccupancyGrid( + ) -> *const rosidl_message_type_support_t; + pub fn nav_msgs__msg__Odometry__create() -> *mut nav_msgs__msg__Odometry; + pub fn nav_msgs__msg__Odometry__destroy(msg: *mut nav_msgs__msg__Odometry); + pub fn nav_msgs__msg__Odometry__Sequence__init( + array: *mut nav_msgs__msg__Odometry__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__msg__Odometry__Sequence__fini(array: *mut nav_msgs__msg__Odometry__Sequence); + pub fn nav_msgs__msg__Odometry__Sequence__create( + size: usize, + ) -> *mut nav_msgs__msg__Odometry__Sequence; + pub fn nav_msgs__msg__Odometry__Sequence__destroy( + array: *mut nav_msgs__msg__Odometry__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__Odometry( + ) -> *const rosidl_message_type_support_t; + pub fn nav_msgs__msg__Path__create() -> *mut nav_msgs__msg__Path; + pub fn nav_msgs__msg__Path__destroy(msg: *mut nav_msgs__msg__Path); + pub fn nav_msgs__msg__Path__Sequence__init( + array: *mut nav_msgs__msg__Path__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__msg__Path__Sequence__fini(array: *mut nav_msgs__msg__Path__Sequence); + pub fn nav_msgs__msg__Path__Sequence__create(size: usize) + -> *mut nav_msgs__msg__Path__Sequence; + pub fn nav_msgs__msg__Path__Sequence__destroy(array: *mut nav_msgs__msg__Path__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__Path( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__GetMap( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__GetPlan( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__LoadMap( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__SetMap( + ) -> *const rosidl_service_type_support_t; + pub fn nav_msgs__srv__GetMap_Request__create() -> *mut nav_msgs__srv__GetMap_Request; + pub fn nav_msgs__srv__GetMap_Request__destroy(msg: *mut nav_msgs__srv__GetMap_Request); + pub fn nav_msgs__srv__GetMap_Request__Sequence__init( + array: *mut nav_msgs__srv__GetMap_Request__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__GetMap_Request__Sequence__fini( + array: *mut nav_msgs__srv__GetMap_Request__Sequence, + ); + pub fn nav_msgs__srv__GetMap_Request__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__GetMap_Request__Sequence; + pub fn nav_msgs__srv__GetMap_Request__Sequence__destroy( + array: *mut nav_msgs__srv__GetMap_Request__Sequence, + ); + pub fn nav_msgs__srv__GetMap_Response__create() -> *mut nav_msgs__srv__GetMap_Response; + pub fn nav_msgs__srv__GetMap_Response__destroy(msg: *mut nav_msgs__srv__GetMap_Response); + pub fn nav_msgs__srv__GetMap_Response__Sequence__init( + array: *mut nav_msgs__srv__GetMap_Response__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__GetMap_Response__Sequence__fini( + array: *mut nav_msgs__srv__GetMap_Response__Sequence, + ); + pub fn nav_msgs__srv__GetMap_Response__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__GetMap_Response__Sequence; + pub fn nav_msgs__srv__GetMap_Response__Sequence__destroy( + array: *mut nav_msgs__srv__GetMap_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__GetMap( + ) -> *const rosidl_service_type_support_t; + pub fn nav_msgs__srv__GetPlan_Request__create() -> *mut nav_msgs__srv__GetPlan_Request; + pub fn nav_msgs__srv__GetPlan_Request__destroy(msg: *mut nav_msgs__srv__GetPlan_Request); + pub fn nav_msgs__srv__GetPlan_Request__Sequence__init( + array: *mut nav_msgs__srv__GetPlan_Request__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__GetPlan_Request__Sequence__fini( + array: *mut nav_msgs__srv__GetPlan_Request__Sequence, + ); + pub fn nav_msgs__srv__GetPlan_Request__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__GetPlan_Request__Sequence; + pub fn nav_msgs__srv__GetPlan_Request__Sequence__destroy( + array: *mut nav_msgs__srv__GetPlan_Request__Sequence, + ); + pub fn nav_msgs__srv__GetPlan_Response__create() -> *mut nav_msgs__srv__GetPlan_Response; + pub fn nav_msgs__srv__GetPlan_Response__destroy(msg: *mut nav_msgs__srv__GetPlan_Response); + pub fn nav_msgs__srv__GetPlan_Response__Sequence__init( + array: *mut nav_msgs__srv__GetPlan_Response__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__GetPlan_Response__Sequence__fini( + array: *mut nav_msgs__srv__GetPlan_Response__Sequence, + ); + pub fn nav_msgs__srv__GetPlan_Response__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__GetPlan_Response__Sequence; + pub fn nav_msgs__srv__GetPlan_Response__Sequence__destroy( + array: *mut nav_msgs__srv__GetPlan_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__GetPlan( + ) -> *const rosidl_service_type_support_t; + pub fn nav_msgs__srv__LoadMap_Request__create() -> *mut nav_msgs__srv__LoadMap_Request; + pub fn nav_msgs__srv__LoadMap_Request__destroy(msg: *mut nav_msgs__srv__LoadMap_Request); + pub fn nav_msgs__srv__LoadMap_Request__Sequence__init( + array: *mut nav_msgs__srv__LoadMap_Request__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__LoadMap_Request__Sequence__fini( + array: *mut nav_msgs__srv__LoadMap_Request__Sequence, + ); + pub fn nav_msgs__srv__LoadMap_Request__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__LoadMap_Request__Sequence; + pub fn nav_msgs__srv__LoadMap_Request__Sequence__destroy( + array: *mut nav_msgs__srv__LoadMap_Request__Sequence, + ); + pub fn nav_msgs__srv__LoadMap_Response__create() -> *mut nav_msgs__srv__LoadMap_Response; + pub fn nav_msgs__srv__LoadMap_Response__destroy(msg: *mut nav_msgs__srv__LoadMap_Response); + pub fn nav_msgs__srv__LoadMap_Response__Sequence__init( + array: *mut nav_msgs__srv__LoadMap_Response__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__LoadMap_Response__Sequence__fini( + array: *mut nav_msgs__srv__LoadMap_Response__Sequence, + ); + pub fn nav_msgs__srv__LoadMap_Response__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__LoadMap_Response__Sequence; + pub fn nav_msgs__srv__LoadMap_Response__Sequence__destroy( + array: *mut nav_msgs__srv__LoadMap_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__LoadMap( + ) -> *const rosidl_service_type_support_t; + pub fn nav_msgs__srv__SetMap_Request__create() -> *mut nav_msgs__srv__SetMap_Request; + pub fn nav_msgs__srv__SetMap_Request__destroy(msg: *mut nav_msgs__srv__SetMap_Request); + pub fn nav_msgs__srv__SetMap_Request__Sequence__init( + array: *mut nav_msgs__srv__SetMap_Request__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__SetMap_Request__Sequence__fini( + array: *mut nav_msgs__srv__SetMap_Request__Sequence, + ); + pub fn nav_msgs__srv__SetMap_Request__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__SetMap_Request__Sequence; + pub fn nav_msgs__srv__SetMap_Request__Sequence__destroy( + array: *mut nav_msgs__srv__SetMap_Request__Sequence, + ); + pub fn nav_msgs__srv__SetMap_Response__create() -> *mut nav_msgs__srv__SetMap_Response; + pub fn nav_msgs__srv__SetMap_Response__destroy(msg: *mut nav_msgs__srv__SetMap_Response); + pub fn nav_msgs__srv__SetMap_Response__Sequence__init( + array: *mut nav_msgs__srv__SetMap_Response__Sequence, + size: usize, + ) -> bool; + pub fn nav_msgs__srv__SetMap_Response__Sequence__fini( + array: *mut nav_msgs__srv__SetMap_Response__Sequence, + ); + pub fn nav_msgs__srv__SetMap_Response__Sequence__create( + size: usize, + ) -> *mut nav_msgs__srv__SetMap_Response__Sequence; + pub fn nav_msgs__srv__SetMap_Response__Sequence__destroy( + array: *mut nav_msgs__srv__SetMap_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__SetMap( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__FloatingPointRange( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__IntegerRange( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ListParametersResult( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Log( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Parameter( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterDescriptor( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEvent( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEventDescriptors( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterType( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterValue( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__SetParametersResult( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__FloatingPointRange__create( + ) -> *mut rcl_interfaces__msg__FloatingPointRange; + pub fn rcl_interfaces__msg__FloatingPointRange__destroy( + msg: *mut rcl_interfaces__msg__FloatingPointRange, + ); + pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__init( + array: *mut rcl_interfaces__msg__FloatingPointRange__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__fini( + array: *mut rcl_interfaces__msg__FloatingPointRange__Sequence, + ); + pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__FloatingPointRange__Sequence; + pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__destroy( + array: *mut rcl_interfaces__msg__FloatingPointRange__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__FloatingPointRange( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__IntegerRange__create() -> *mut rcl_interfaces__msg__IntegerRange; + pub fn rcl_interfaces__msg__IntegerRange__destroy(msg: *mut rcl_interfaces__msg__IntegerRange); + pub fn rcl_interfaces__msg__IntegerRange__Sequence__init( + array: *mut rcl_interfaces__msg__IntegerRange__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__IntegerRange__Sequence__fini( + array: *mut rcl_interfaces__msg__IntegerRange__Sequence, + ); + pub fn rcl_interfaces__msg__IntegerRange__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__IntegerRange__Sequence; + pub fn rcl_interfaces__msg__IntegerRange__Sequence__destroy( + array: *mut rcl_interfaces__msg__IntegerRange__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__IntegerRange( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ListParametersResult__create( + ) -> *mut rcl_interfaces__msg__ListParametersResult; + pub fn rcl_interfaces__msg__ListParametersResult__destroy( + msg: *mut rcl_interfaces__msg__ListParametersResult, + ); + pub fn rcl_interfaces__msg__ListParametersResult__Sequence__init( + array: *mut rcl_interfaces__msg__ListParametersResult__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ListParametersResult__Sequence__fini( + array: *mut rcl_interfaces__msg__ListParametersResult__Sequence, + ); + pub fn rcl_interfaces__msg__ListParametersResult__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ListParametersResult__Sequence; + pub fn rcl_interfaces__msg__ListParametersResult__Sequence__destroy( + array: *mut rcl_interfaces__msg__ListParametersResult__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ListParametersResult( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__Log__create() -> *mut rcl_interfaces__msg__Log; + pub fn rcl_interfaces__msg__Log__destroy(msg: *mut rcl_interfaces__msg__Log); + pub fn rcl_interfaces__msg__Log__Sequence__init( + array: *mut rcl_interfaces__msg__Log__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__Log__Sequence__fini(array: *mut rcl_interfaces__msg__Log__Sequence); + pub fn rcl_interfaces__msg__Log__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__Log__Sequence; + pub fn rcl_interfaces__msg__Log__Sequence__destroy( + array: *mut rcl_interfaces__msg__Log__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__Log( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__Parameter__create() -> *mut rcl_interfaces__msg__Parameter; + pub fn rcl_interfaces__msg__Parameter__destroy(msg: *mut rcl_interfaces__msg__Parameter); + pub fn rcl_interfaces__msg__Parameter__Sequence__init( + array: *mut rcl_interfaces__msg__Parameter__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__Parameter__Sequence__fini( + array: *mut rcl_interfaces__msg__Parameter__Sequence, + ); + pub fn rcl_interfaces__msg__Parameter__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__Parameter__Sequence; + pub fn rcl_interfaces__msg__Parameter__Sequence__destroy( + array: *mut rcl_interfaces__msg__Parameter__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__Parameter( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ParameterDescriptor__create( + ) -> *mut rcl_interfaces__msg__ParameterDescriptor; + pub fn rcl_interfaces__msg__ParameterDescriptor__destroy( + msg: *mut rcl_interfaces__msg__ParameterDescriptor, + ); + pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__init( + array: *mut rcl_interfaces__msg__ParameterDescriptor__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__fini( + array: *mut rcl_interfaces__msg__ParameterDescriptor__Sequence, + ); + pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ParameterDescriptor__Sequence; + pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__destroy( + array: *mut rcl_interfaces__msg__ParameterDescriptor__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterDescriptor( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ParameterEvent__create() -> *mut rcl_interfaces__msg__ParameterEvent; + pub fn rcl_interfaces__msg__ParameterEvent__destroy( + msg: *mut rcl_interfaces__msg__ParameterEvent, + ); + pub fn rcl_interfaces__msg__ParameterEvent__Sequence__init( + array: *mut rcl_interfaces__msg__ParameterEvent__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ParameterEvent__Sequence__fini( + array: *mut rcl_interfaces__msg__ParameterEvent__Sequence, + ); + pub fn rcl_interfaces__msg__ParameterEvent__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ParameterEvent__Sequence; + pub fn rcl_interfaces__msg__ParameterEvent__Sequence__destroy( + array: *mut rcl_interfaces__msg__ParameterEvent__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEvent( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ParameterEventDescriptors__create( + ) -> *mut rcl_interfaces__msg__ParameterEventDescriptors; + pub fn rcl_interfaces__msg__ParameterEventDescriptors__destroy( + msg: *mut rcl_interfaces__msg__ParameterEventDescriptors, + ); + pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__init( + array: *mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__fini( + array: *mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence, + ); + pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence; + pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__destroy( + array: *mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEventDescriptors( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ParameterType__create() -> *mut rcl_interfaces__msg__ParameterType; + pub fn rcl_interfaces__msg__ParameterType__destroy( + msg: *mut rcl_interfaces__msg__ParameterType, + ); + pub fn rcl_interfaces__msg__ParameterType__Sequence__init( + array: *mut rcl_interfaces__msg__ParameterType__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ParameterType__Sequence__fini( + array: *mut rcl_interfaces__msg__ParameterType__Sequence, + ); + pub fn rcl_interfaces__msg__ParameterType__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ParameterType__Sequence; + pub fn rcl_interfaces__msg__ParameterType__Sequence__destroy( + array: *mut rcl_interfaces__msg__ParameterType__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterType( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__ParameterValue__create() -> *mut rcl_interfaces__msg__ParameterValue; + pub fn rcl_interfaces__msg__ParameterValue__destroy( + msg: *mut rcl_interfaces__msg__ParameterValue, + ); + pub fn rcl_interfaces__msg__ParameterValue__Sequence__init( + array: *mut rcl_interfaces__msg__ParameterValue__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__ParameterValue__Sequence__fini( + array: *mut rcl_interfaces__msg__ParameterValue__Sequence, + ); + pub fn rcl_interfaces__msg__ParameterValue__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__ParameterValue__Sequence; + pub fn rcl_interfaces__msg__ParameterValue__Sequence__destroy( + array: *mut rcl_interfaces__msg__ParameterValue__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterValue( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__msg__SetParametersResult__create( + ) -> *mut rcl_interfaces__msg__SetParametersResult; + pub fn rcl_interfaces__msg__SetParametersResult__destroy( + msg: *mut rcl_interfaces__msg__SetParametersResult, + ); + pub fn rcl_interfaces__msg__SetParametersResult__Sequence__init( + array: *mut rcl_interfaces__msg__SetParametersResult__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__msg__SetParametersResult__Sequence__fini( + array: *mut rcl_interfaces__msg__SetParametersResult__Sequence, + ); + pub fn rcl_interfaces__msg__SetParametersResult__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__msg__SetParametersResult__Sequence; + pub fn rcl_interfaces__msg__SetParametersResult__Sequence__destroy( + array: *mut rcl_interfaces__msg__SetParametersResult__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__SetParametersResult( + ) -> *const rosidl_message_type_support_t; + pub fn rcl_interfaces__srv__DescribeParameters_Request__create( + ) -> *mut rcl_interfaces__srv__DescribeParameters_Request; + pub fn rcl_interfaces__srv__DescribeParameters_Request__destroy( + msg: *mut rcl_interfaces__srv__DescribeParameters_Request, + ); + pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__init( + array: *mut rcl_interfaces__srv__DescribeParameters_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__DescribeParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__DescribeParameters_Request__Sequence; + pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__DescribeParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__DescribeParameters_Response__create( + ) -> *mut rcl_interfaces__srv__DescribeParameters_Response; + pub fn rcl_interfaces__srv__DescribeParameters_Response__destroy( + msg: *mut rcl_interfaces__srv__DescribeParameters_Response, + ); + pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__init( + array: *mut rcl_interfaces__srv__DescribeParameters_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__DescribeParameters_Response__Sequence, + ); + pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__DescribeParameters_Response__Sequence; + pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__DescribeParameters_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__DescribeParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__DescribeParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameterTypes( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__ListParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__SetParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__SetParametersAtomically( + ) -> *const rosidl_service_type_support_t; + pub fn rcl_interfaces__srv__GetParameterTypes_Request__create( + ) -> *mut rcl_interfaces__srv__GetParameterTypes_Request; + pub fn rcl_interfaces__srv__GetParameterTypes_Request__destroy( + msg: *mut rcl_interfaces__srv__GetParameterTypes_Request, + ); + pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__init( + array: *mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence; + pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameterTypes_Response__create( + ) -> *mut rcl_interfaces__srv__GetParameterTypes_Response; + pub fn rcl_interfaces__srv__GetParameterTypes_Response__destroy( + msg: *mut rcl_interfaces__srv__GetParameterTypes_Response, + ); + pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__init( + array: *mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence; + pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameterTypes( + ) -> *const rosidl_service_type_support_t; + pub fn rcl_interfaces__srv__GetParameters_Request__create( + ) -> *mut rcl_interfaces__srv__GetParameters_Request; + pub fn rcl_interfaces__srv__GetParameters_Request__destroy( + msg: *mut rcl_interfaces__srv__GetParameters_Request, + ); + pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__init( + array: *mut rcl_interfaces__srv__GetParameters_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__GetParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__GetParameters_Request__Sequence; + pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__GetParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameters_Response__create( + ) -> *mut rcl_interfaces__srv__GetParameters_Response; + pub fn rcl_interfaces__srv__GetParameters_Response__destroy( + msg: *mut rcl_interfaces__srv__GetParameters_Response, + ); + pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__init( + array: *mut rcl_interfaces__srv__GetParameters_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__GetParameters_Response__Sequence, + ); + pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__GetParameters_Response__Sequence; + pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__GetParameters_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rcl_interfaces__srv__ListParameters_Request__create( + ) -> *mut rcl_interfaces__srv__ListParameters_Request; + pub fn rcl_interfaces__srv__ListParameters_Request__destroy( + msg: *mut rcl_interfaces__srv__ListParameters_Request, + ); + pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__init( + array: *mut rcl_interfaces__srv__ListParameters_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__ListParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__ListParameters_Request__Sequence; + pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__ListParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__ListParameters_Response__create( + ) -> *mut rcl_interfaces__srv__ListParameters_Response; + pub fn rcl_interfaces__srv__ListParameters_Response__destroy( + msg: *mut rcl_interfaces__srv__ListParameters_Response, + ); + pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__init( + array: *mut rcl_interfaces__srv__ListParameters_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__ListParameters_Response__Sequence, + ); + pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__ListParameters_Response__Sequence; + pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__ListParameters_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__ListParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rcl_interfaces__srv__SetParameters_Request__create( + ) -> *mut rcl_interfaces__srv__SetParameters_Request; + pub fn rcl_interfaces__srv__SetParameters_Request__destroy( + msg: *mut rcl_interfaces__srv__SetParameters_Request, + ); + pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__init( + array: *mut rcl_interfaces__srv__SetParameters_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__SetParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__SetParameters_Request__Sequence; + pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__SetParameters_Request__Sequence, + ); + pub fn rcl_interfaces__srv__SetParameters_Response__create( + ) -> *mut rcl_interfaces__srv__SetParameters_Response; + pub fn rcl_interfaces__srv__SetParameters_Response__destroy( + msg: *mut rcl_interfaces__srv__SetParameters_Response, + ); + pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__init( + array: *mut rcl_interfaces__srv__SetParameters_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__SetParameters_Response__Sequence, + ); + pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__SetParameters_Response__Sequence; + pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__SetParameters_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__SetParameters( + ) -> *const rosidl_service_type_support_t; + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__create( + ) -> *mut rcl_interfaces__srv__SetParametersAtomically_Request; + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__destroy( + msg: *mut rcl_interfaces__srv__SetParametersAtomically_Request, + ); + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__init( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__fini( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence, + ); + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence; + pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__destroy( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence, + ); + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__create( + ) -> *mut rcl_interfaces__srv__SetParametersAtomically_Response; + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__destroy( + msg: *mut rcl_interfaces__srv__SetParametersAtomically_Response, + ); + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__init( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence, + size: usize, + ) -> bool; + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__fini( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence, + ); + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__create( + size: usize, + ) -> *mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence; + pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__destroy( + array: *mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__SetParametersAtomically( + ) -> *const rosidl_service_type_support_t; + pub fn rosgraph_msgs__msg__Clock__create() -> *mut rosgraph_msgs__msg__Clock; + pub fn rosgraph_msgs__msg__Clock__destroy(msg: *mut rosgraph_msgs__msg__Clock); + pub fn rosgraph_msgs__msg__Clock__Sequence__init( + array: *mut rosgraph_msgs__msg__Clock__Sequence, + size: usize, + ) -> bool; + pub fn rosgraph_msgs__msg__Clock__Sequence__fini( + array: *mut rosgraph_msgs__msg__Clock__Sequence, + ); + pub fn rosgraph_msgs__msg__Clock__Sequence__create( + size: usize, + ) -> *mut rosgraph_msgs__msg__Clock__Sequence; + pub fn rosgraph_msgs__msg__Clock__Sequence__destroy( + array: *mut rosgraph_msgs__msg__Clock__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__rosgraph_msgs__msg__Clock( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rosgraph_msgs__msg__Clock( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__BatteryState__create() -> *mut sensor_msgs__msg__BatteryState; + pub fn sensor_msgs__msg__BatteryState__destroy(msg: *mut sensor_msgs__msg__BatteryState); + pub fn sensor_msgs__msg__BatteryState__Sequence__init( + array: *mut sensor_msgs__msg__BatteryState__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__BatteryState__Sequence__fini( + array: *mut sensor_msgs__msg__BatteryState__Sequence, + ); + pub fn sensor_msgs__msg__BatteryState__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__BatteryState__Sequence; + pub fn sensor_msgs__msg__BatteryState__Sequence__destroy( + array: *mut sensor_msgs__msg__BatteryState__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__BatteryState( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__CameraInfo__create() -> *mut sensor_msgs__msg__CameraInfo; + pub fn sensor_msgs__msg__CameraInfo__destroy(msg: *mut sensor_msgs__msg__CameraInfo); + pub fn sensor_msgs__msg__CameraInfo__Sequence__init( + array: *mut sensor_msgs__msg__CameraInfo__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__CameraInfo__Sequence__fini( + array: *mut sensor_msgs__msg__CameraInfo__Sequence, + ); + pub fn sensor_msgs__msg__CameraInfo__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__CameraInfo__Sequence; + pub fn sensor_msgs__msg__CameraInfo__Sequence__destroy( + array: *mut sensor_msgs__msg__CameraInfo__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__CameraInfo( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__ChannelFloat32__create() -> *mut sensor_msgs__msg__ChannelFloat32; + pub fn sensor_msgs__msg__ChannelFloat32__destroy(msg: *mut sensor_msgs__msg__ChannelFloat32); + pub fn sensor_msgs__msg__ChannelFloat32__Sequence__init( + array: *mut sensor_msgs__msg__ChannelFloat32__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__ChannelFloat32__Sequence__fini( + array: *mut sensor_msgs__msg__ChannelFloat32__Sequence, + ); + pub fn sensor_msgs__msg__ChannelFloat32__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__ChannelFloat32__Sequence; + pub fn sensor_msgs__msg__ChannelFloat32__Sequence__destroy( + array: *mut sensor_msgs__msg__ChannelFloat32__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__ChannelFloat32( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__CompressedImage__create() -> *mut sensor_msgs__msg__CompressedImage; + pub fn sensor_msgs__msg__CompressedImage__destroy(msg: *mut sensor_msgs__msg__CompressedImage); + pub fn sensor_msgs__msg__CompressedImage__Sequence__init( + array: *mut sensor_msgs__msg__CompressedImage__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__CompressedImage__Sequence__fini( + array: *mut sensor_msgs__msg__CompressedImage__Sequence, + ); + pub fn sensor_msgs__msg__CompressedImage__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__CompressedImage__Sequence; + pub fn sensor_msgs__msg__CompressedImage__Sequence__destroy( + array: *mut sensor_msgs__msg__CompressedImage__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__CompressedImage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__BatteryState( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CameraInfo( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__ChannelFloat32( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CompressedImage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__FluidPressure( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Illuminance( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Image( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Imu( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JointState( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Joy( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedbackArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserEcho( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserScan( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MagneticField( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiDOFJointState( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiEchoLaserScan( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatFix( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatStatus( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud2( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointField( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Range( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RegionOfInterest( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RelativeHumidity( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Temperature( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__TimeReference( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__FluidPressure__create() -> *mut sensor_msgs__msg__FluidPressure; + pub fn sensor_msgs__msg__FluidPressure__destroy(msg: *mut sensor_msgs__msg__FluidPressure); + pub fn sensor_msgs__msg__FluidPressure__Sequence__init( + array: *mut sensor_msgs__msg__FluidPressure__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__FluidPressure__Sequence__fini( + array: *mut sensor_msgs__msg__FluidPressure__Sequence, + ); + pub fn sensor_msgs__msg__FluidPressure__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__FluidPressure__Sequence; + pub fn sensor_msgs__msg__FluidPressure__Sequence__destroy( + array: *mut sensor_msgs__msg__FluidPressure__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__FluidPressure( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Illuminance__create() -> *mut sensor_msgs__msg__Illuminance; + pub fn sensor_msgs__msg__Illuminance__destroy(msg: *mut sensor_msgs__msg__Illuminance); + pub fn sensor_msgs__msg__Illuminance__Sequence__init( + array: *mut sensor_msgs__msg__Illuminance__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Illuminance__Sequence__fini( + array: *mut sensor_msgs__msg__Illuminance__Sequence, + ); + pub fn sensor_msgs__msg__Illuminance__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Illuminance__Sequence; + pub fn sensor_msgs__msg__Illuminance__Sequence__destroy( + array: *mut sensor_msgs__msg__Illuminance__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Illuminance( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Image__create() -> *mut sensor_msgs__msg__Image; + pub fn sensor_msgs__msg__Image__destroy(msg: *mut sensor_msgs__msg__Image); + pub fn sensor_msgs__msg__Image__Sequence__init( + array: *mut sensor_msgs__msg__Image__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Image__Sequence__fini(array: *mut sensor_msgs__msg__Image__Sequence); + pub fn sensor_msgs__msg__Image__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Image__Sequence; + pub fn sensor_msgs__msg__Image__Sequence__destroy( + array: *mut sensor_msgs__msg__Image__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Image( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Imu__create() -> *mut sensor_msgs__msg__Imu; + pub fn sensor_msgs__msg__Imu__destroy(msg: *mut sensor_msgs__msg__Imu); + pub fn sensor_msgs__msg__Imu__Sequence__init( + array: *mut sensor_msgs__msg__Imu__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Imu__Sequence__fini(array: *mut sensor_msgs__msg__Imu__Sequence); + pub fn sensor_msgs__msg__Imu__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Imu__Sequence; + pub fn sensor_msgs__msg__Imu__Sequence__destroy(array: *mut sensor_msgs__msg__Imu__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Imu( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__JointState__create() -> *mut sensor_msgs__msg__JointState; + pub fn sensor_msgs__msg__JointState__destroy(msg: *mut sensor_msgs__msg__JointState); + pub fn sensor_msgs__msg__JointState__Sequence__init( + array: *mut sensor_msgs__msg__JointState__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__JointState__Sequence__fini( + array: *mut sensor_msgs__msg__JointState__Sequence, + ); + pub fn sensor_msgs__msg__JointState__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__JointState__Sequence; + pub fn sensor_msgs__msg__JointState__Sequence__destroy( + array: *mut sensor_msgs__msg__JointState__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JointState( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Joy__create() -> *mut sensor_msgs__msg__Joy; + pub fn sensor_msgs__msg__Joy__destroy(msg: *mut sensor_msgs__msg__Joy); + pub fn sensor_msgs__msg__Joy__Sequence__init( + array: *mut sensor_msgs__msg__Joy__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Joy__Sequence__fini(array: *mut sensor_msgs__msg__Joy__Sequence); + pub fn sensor_msgs__msg__Joy__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Joy__Sequence; + pub fn sensor_msgs__msg__Joy__Sequence__destroy(array: *mut sensor_msgs__msg__Joy__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Joy( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__JoyFeedback__create() -> *mut sensor_msgs__msg__JoyFeedback; + pub fn sensor_msgs__msg__JoyFeedback__destroy(msg: *mut sensor_msgs__msg__JoyFeedback); + pub fn sensor_msgs__msg__JoyFeedback__Sequence__init( + array: *mut sensor_msgs__msg__JoyFeedback__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__JoyFeedback__Sequence__fini( + array: *mut sensor_msgs__msg__JoyFeedback__Sequence, + ); + pub fn sensor_msgs__msg__JoyFeedback__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__JoyFeedback__Sequence; + pub fn sensor_msgs__msg__JoyFeedback__Sequence__destroy( + array: *mut sensor_msgs__msg__JoyFeedback__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedback( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__JoyFeedbackArray__create() -> *mut sensor_msgs__msg__JoyFeedbackArray; + pub fn sensor_msgs__msg__JoyFeedbackArray__destroy( + msg: *mut sensor_msgs__msg__JoyFeedbackArray, + ); + pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__init( + array: *mut sensor_msgs__msg__JoyFeedbackArray__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__fini( + array: *mut sensor_msgs__msg__JoyFeedbackArray__Sequence, + ); + pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__JoyFeedbackArray__Sequence; + pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__destroy( + array: *mut sensor_msgs__msg__JoyFeedbackArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedbackArray( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__LaserEcho__create() -> *mut sensor_msgs__msg__LaserEcho; + pub fn sensor_msgs__msg__LaserEcho__destroy(msg: *mut sensor_msgs__msg__LaserEcho); + pub fn sensor_msgs__msg__LaserEcho__Sequence__init( + array: *mut sensor_msgs__msg__LaserEcho__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__LaserEcho__Sequence__fini( + array: *mut sensor_msgs__msg__LaserEcho__Sequence, + ); + pub fn sensor_msgs__msg__LaserEcho__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__LaserEcho__Sequence; + pub fn sensor_msgs__msg__LaserEcho__Sequence__destroy( + array: *mut sensor_msgs__msg__LaserEcho__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__LaserEcho( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__LaserScan__create() -> *mut sensor_msgs__msg__LaserScan; + pub fn sensor_msgs__msg__LaserScan__destroy(msg: *mut sensor_msgs__msg__LaserScan); + pub fn sensor_msgs__msg__LaserScan__Sequence__init( + array: *mut sensor_msgs__msg__LaserScan__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__LaserScan__Sequence__fini( + array: *mut sensor_msgs__msg__LaserScan__Sequence, + ); + pub fn sensor_msgs__msg__LaserScan__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__LaserScan__Sequence; + pub fn sensor_msgs__msg__LaserScan__Sequence__destroy( + array: *mut sensor_msgs__msg__LaserScan__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__LaserScan( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__MagneticField__create() -> *mut sensor_msgs__msg__MagneticField; + pub fn sensor_msgs__msg__MagneticField__destroy(msg: *mut sensor_msgs__msg__MagneticField); + pub fn sensor_msgs__msg__MagneticField__Sequence__init( + array: *mut sensor_msgs__msg__MagneticField__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__MagneticField__Sequence__fini( + array: *mut sensor_msgs__msg__MagneticField__Sequence, + ); + pub fn sensor_msgs__msg__MagneticField__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__MagneticField__Sequence; + pub fn sensor_msgs__msg__MagneticField__Sequence__destroy( + array: *mut sensor_msgs__msg__MagneticField__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MagneticField( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__MultiDOFJointState__create( + ) -> *mut sensor_msgs__msg__MultiDOFJointState; + pub fn sensor_msgs__msg__MultiDOFJointState__destroy( + msg: *mut sensor_msgs__msg__MultiDOFJointState, + ); + pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__init( + array: *mut sensor_msgs__msg__MultiDOFJointState__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__fini( + array: *mut sensor_msgs__msg__MultiDOFJointState__Sequence, + ); + pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__MultiDOFJointState__Sequence; + pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__destroy( + array: *mut sensor_msgs__msg__MultiDOFJointState__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MultiDOFJointState( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__MultiEchoLaserScan__create( + ) -> *mut sensor_msgs__msg__MultiEchoLaserScan; + pub fn sensor_msgs__msg__MultiEchoLaserScan__destroy( + msg: *mut sensor_msgs__msg__MultiEchoLaserScan, + ); + pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__init( + array: *mut sensor_msgs__msg__MultiEchoLaserScan__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__fini( + array: *mut sensor_msgs__msg__MultiEchoLaserScan__Sequence, + ); + pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__MultiEchoLaserScan__Sequence; + pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__destroy( + array: *mut sensor_msgs__msg__MultiEchoLaserScan__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MultiEchoLaserScan( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__NavSatFix__create() -> *mut sensor_msgs__msg__NavSatFix; + pub fn sensor_msgs__msg__NavSatFix__destroy(msg: *mut sensor_msgs__msg__NavSatFix); + pub fn sensor_msgs__msg__NavSatFix__Sequence__init( + array: *mut sensor_msgs__msg__NavSatFix__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__NavSatFix__Sequence__fini( + array: *mut sensor_msgs__msg__NavSatFix__Sequence, + ); + pub fn sensor_msgs__msg__NavSatFix__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__NavSatFix__Sequence; + pub fn sensor_msgs__msg__NavSatFix__Sequence__destroy( + array: *mut sensor_msgs__msg__NavSatFix__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__NavSatFix( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__NavSatStatus__create() -> *mut sensor_msgs__msg__NavSatStatus; + pub fn sensor_msgs__msg__NavSatStatus__destroy(msg: *mut sensor_msgs__msg__NavSatStatus); + pub fn sensor_msgs__msg__NavSatStatus__Sequence__init( + array: *mut sensor_msgs__msg__NavSatStatus__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__NavSatStatus__Sequence__fini( + array: *mut sensor_msgs__msg__NavSatStatus__Sequence, + ); + pub fn sensor_msgs__msg__NavSatStatus__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__NavSatStatus__Sequence; + pub fn sensor_msgs__msg__NavSatStatus__Sequence__destroy( + array: *mut sensor_msgs__msg__NavSatStatus__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__NavSatStatus( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__PointCloud__create() -> *mut sensor_msgs__msg__PointCloud; + pub fn sensor_msgs__msg__PointCloud__destroy(msg: *mut sensor_msgs__msg__PointCloud); + pub fn sensor_msgs__msg__PointCloud__Sequence__init( + array: *mut sensor_msgs__msg__PointCloud__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__PointCloud__Sequence__fini( + array: *mut sensor_msgs__msg__PointCloud__Sequence, + ); + pub fn sensor_msgs__msg__PointCloud__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__PointCloud__Sequence; + pub fn sensor_msgs__msg__PointCloud__Sequence__destroy( + array: *mut sensor_msgs__msg__PointCloud__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__PointCloud2__create() -> *mut sensor_msgs__msg__PointCloud2; + pub fn sensor_msgs__msg__PointCloud2__destroy(msg: *mut sensor_msgs__msg__PointCloud2); + pub fn sensor_msgs__msg__PointCloud2__Sequence__init( + array: *mut sensor_msgs__msg__PointCloud2__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__PointCloud2__Sequence__fini( + array: *mut sensor_msgs__msg__PointCloud2__Sequence, + ); + pub fn sensor_msgs__msg__PointCloud2__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__PointCloud2__Sequence; + pub fn sensor_msgs__msg__PointCloud2__Sequence__destroy( + array: *mut sensor_msgs__msg__PointCloud2__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud2( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__PointField__create() -> *mut sensor_msgs__msg__PointField; + pub fn sensor_msgs__msg__PointField__destroy(msg: *mut sensor_msgs__msg__PointField); + pub fn sensor_msgs__msg__PointField__Sequence__init( + array: *mut sensor_msgs__msg__PointField__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__PointField__Sequence__fini( + array: *mut sensor_msgs__msg__PointField__Sequence, + ); + pub fn sensor_msgs__msg__PointField__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__PointField__Sequence; + pub fn sensor_msgs__msg__PointField__Sequence__destroy( + array: *mut sensor_msgs__msg__PointField__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointField( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Range__create() -> *mut sensor_msgs__msg__Range; + pub fn sensor_msgs__msg__Range__destroy(msg: *mut sensor_msgs__msg__Range); + pub fn sensor_msgs__msg__Range__Sequence__init( + array: *mut sensor_msgs__msg__Range__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Range__Sequence__fini(array: *mut sensor_msgs__msg__Range__Sequence); + pub fn sensor_msgs__msg__Range__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Range__Sequence; + pub fn sensor_msgs__msg__Range__Sequence__destroy( + array: *mut sensor_msgs__msg__Range__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Range( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__RegionOfInterest__create() -> *mut sensor_msgs__msg__RegionOfInterest; + pub fn sensor_msgs__msg__RegionOfInterest__destroy( + msg: *mut sensor_msgs__msg__RegionOfInterest, + ); + pub fn sensor_msgs__msg__RegionOfInterest__Sequence__init( + array: *mut sensor_msgs__msg__RegionOfInterest__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__RegionOfInterest__Sequence__fini( + array: *mut sensor_msgs__msg__RegionOfInterest__Sequence, + ); + pub fn sensor_msgs__msg__RegionOfInterest__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__RegionOfInterest__Sequence; + pub fn sensor_msgs__msg__RegionOfInterest__Sequence__destroy( + array: *mut sensor_msgs__msg__RegionOfInterest__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__RegionOfInterest( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__RelativeHumidity__create() -> *mut sensor_msgs__msg__RelativeHumidity; + pub fn sensor_msgs__msg__RelativeHumidity__destroy( + msg: *mut sensor_msgs__msg__RelativeHumidity, + ); + pub fn sensor_msgs__msg__RelativeHumidity__Sequence__init( + array: *mut sensor_msgs__msg__RelativeHumidity__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__RelativeHumidity__Sequence__fini( + array: *mut sensor_msgs__msg__RelativeHumidity__Sequence, + ); + pub fn sensor_msgs__msg__RelativeHumidity__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__RelativeHumidity__Sequence; + pub fn sensor_msgs__msg__RelativeHumidity__Sequence__destroy( + array: *mut sensor_msgs__msg__RelativeHumidity__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__RelativeHumidity( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__Temperature__create() -> *mut sensor_msgs__msg__Temperature; + pub fn sensor_msgs__msg__Temperature__destroy(msg: *mut sensor_msgs__msg__Temperature); + pub fn sensor_msgs__msg__Temperature__Sequence__init( + array: *mut sensor_msgs__msg__Temperature__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__Temperature__Sequence__fini( + array: *mut sensor_msgs__msg__Temperature__Sequence, + ); + pub fn sensor_msgs__msg__Temperature__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__Temperature__Sequence; + pub fn sensor_msgs__msg__Temperature__Sequence__destroy( + array: *mut sensor_msgs__msg__Temperature__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Temperature( + ) -> *const rosidl_message_type_support_t; + pub fn sensor_msgs__msg__TimeReference__create() -> *mut sensor_msgs__msg__TimeReference; + pub fn sensor_msgs__msg__TimeReference__destroy(msg: *mut sensor_msgs__msg__TimeReference); + pub fn sensor_msgs__msg__TimeReference__Sequence__init( + array: *mut sensor_msgs__msg__TimeReference__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__msg__TimeReference__Sequence__fini( + array: *mut sensor_msgs__msg__TimeReference__Sequence, + ); + pub fn sensor_msgs__msg__TimeReference__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__msg__TimeReference__Sequence; + pub fn sensor_msgs__msg__TimeReference__Sequence__destroy( + array: *mut sensor_msgs__msg__TimeReference__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__TimeReference( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__sensor_msgs__srv__SetCameraInfo( + ) -> *const rosidl_service_type_support_t; + pub fn sensor_msgs__srv__SetCameraInfo_Request__create( + ) -> *mut sensor_msgs__srv__SetCameraInfo_Request; + pub fn sensor_msgs__srv__SetCameraInfo_Request__destroy( + msg: *mut sensor_msgs__srv__SetCameraInfo_Request, + ); + pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__init( + array: *mut sensor_msgs__srv__SetCameraInfo_Request__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__fini( + array: *mut sensor_msgs__srv__SetCameraInfo_Request__Sequence, + ); + pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__srv__SetCameraInfo_Request__Sequence; + pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__destroy( + array: *mut sensor_msgs__srv__SetCameraInfo_Request__Sequence, + ); + pub fn sensor_msgs__srv__SetCameraInfo_Response__create( + ) -> *mut sensor_msgs__srv__SetCameraInfo_Response; + pub fn sensor_msgs__srv__SetCameraInfo_Response__destroy( + msg: *mut sensor_msgs__srv__SetCameraInfo_Response, + ); + pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__init( + array: *mut sensor_msgs__srv__SetCameraInfo_Response__Sequence, + size: usize, + ) -> bool; + pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__fini( + array: *mut sensor_msgs__srv__SetCameraInfo_Response__Sequence, + ); + pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__create( + size: usize, + ) -> *mut sensor_msgs__srv__SetCameraInfo_Response__Sequence; + pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__destroy( + array: *mut sensor_msgs__srv__SetCameraInfo_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__sensor_msgs__srv__SetCameraInfo( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Mesh( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__MeshTriangle( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Plane( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__SolidPrimitive( + ) -> *const rosidl_message_type_support_t; + pub fn shape_msgs__msg__Mesh__create() -> *mut shape_msgs__msg__Mesh; + pub fn shape_msgs__msg__Mesh__destroy(msg: *mut shape_msgs__msg__Mesh); + pub fn shape_msgs__msg__Mesh__Sequence__init( + array: *mut shape_msgs__msg__Mesh__Sequence, + size: usize, + ) -> bool; + pub fn shape_msgs__msg__Mesh__Sequence__fini(array: *mut shape_msgs__msg__Mesh__Sequence); + pub fn shape_msgs__msg__Mesh__Sequence__create( + size: usize, + ) -> *mut shape_msgs__msg__Mesh__Sequence; + pub fn shape_msgs__msg__Mesh__Sequence__destroy(array: *mut shape_msgs__msg__Mesh__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__Mesh( + ) -> *const rosidl_message_type_support_t; + pub fn shape_msgs__msg__MeshTriangle__create() -> *mut shape_msgs__msg__MeshTriangle; + pub fn shape_msgs__msg__MeshTriangle__destroy(msg: *mut shape_msgs__msg__MeshTriangle); + pub fn shape_msgs__msg__MeshTriangle__Sequence__init( + array: *mut shape_msgs__msg__MeshTriangle__Sequence, + size: usize, + ) -> bool; + pub fn shape_msgs__msg__MeshTriangle__Sequence__fini( + array: *mut shape_msgs__msg__MeshTriangle__Sequence, + ); + pub fn shape_msgs__msg__MeshTriangle__Sequence__create( + size: usize, + ) -> *mut shape_msgs__msg__MeshTriangle__Sequence; + pub fn shape_msgs__msg__MeshTriangle__Sequence__destroy( + array: *mut shape_msgs__msg__MeshTriangle__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__MeshTriangle( + ) -> *const rosidl_message_type_support_t; + pub fn shape_msgs__msg__Plane__create() -> *mut shape_msgs__msg__Plane; + pub fn shape_msgs__msg__Plane__destroy(msg: *mut shape_msgs__msg__Plane); + pub fn shape_msgs__msg__Plane__Sequence__init( + array: *mut shape_msgs__msg__Plane__Sequence, + size: usize, + ) -> bool; + pub fn shape_msgs__msg__Plane__Sequence__fini(array: *mut shape_msgs__msg__Plane__Sequence); + pub fn shape_msgs__msg__Plane__Sequence__create( + size: usize, + ) -> *mut shape_msgs__msg__Plane__Sequence; + pub fn shape_msgs__msg__Plane__Sequence__destroy(array: *mut shape_msgs__msg__Plane__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__Plane( + ) -> *const rosidl_message_type_support_t; + pub fn shape_msgs__msg__SolidPrimitive__create() -> *mut shape_msgs__msg__SolidPrimitive; + pub fn shape_msgs__msg__SolidPrimitive__destroy(msg: *mut shape_msgs__msg__SolidPrimitive); + pub fn shape_msgs__msg__SolidPrimitive__Sequence__init( + array: *mut shape_msgs__msg__SolidPrimitive__Sequence, + size: usize, + ) -> bool; + pub fn shape_msgs__msg__SolidPrimitive__Sequence__fini( + array: *mut shape_msgs__msg__SolidPrimitive__Sequence, + ); + pub fn shape_msgs__msg__SolidPrimitive__Sequence__create( + size: usize, + ) -> *mut shape_msgs__msg__SolidPrimitive__Sequence; + pub fn shape_msgs__msg__SolidPrimitive__Sequence__destroy( + array: *mut shape_msgs__msg__SolidPrimitive__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__SolidPrimitive( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__MetricsMessage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataPoint( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataType( + ) -> *const rosidl_message_type_support_t; + pub fn statistics_msgs__msg__MetricsMessage__create( + ) -> *mut statistics_msgs__msg__MetricsMessage; + pub fn statistics_msgs__msg__MetricsMessage__destroy( + msg: *mut statistics_msgs__msg__MetricsMessage, + ); + pub fn statistics_msgs__msg__MetricsMessage__Sequence__init( + array: *mut statistics_msgs__msg__MetricsMessage__Sequence, + size: usize, + ) -> bool; + pub fn statistics_msgs__msg__MetricsMessage__Sequence__fini( + array: *mut statistics_msgs__msg__MetricsMessage__Sequence, + ); + pub fn statistics_msgs__msg__MetricsMessage__Sequence__create( + size: usize, + ) -> *mut statistics_msgs__msg__MetricsMessage__Sequence; + pub fn statistics_msgs__msg__MetricsMessage__Sequence__destroy( + array: *mut statistics_msgs__msg__MetricsMessage__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__MetricsMessage( + ) -> *const rosidl_message_type_support_t; + pub fn statistics_msgs__msg__StatisticDataPoint__create( + ) -> *mut statistics_msgs__msg__StatisticDataPoint; + pub fn statistics_msgs__msg__StatisticDataPoint__destroy( + msg: *mut statistics_msgs__msg__StatisticDataPoint, + ); + pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__init( + array: *mut statistics_msgs__msg__StatisticDataPoint__Sequence, + size: usize, + ) -> bool; + pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__fini( + array: *mut statistics_msgs__msg__StatisticDataPoint__Sequence, + ); + pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__create( + size: usize, + ) -> *mut statistics_msgs__msg__StatisticDataPoint__Sequence; + pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__destroy( + array: *mut statistics_msgs__msg__StatisticDataPoint__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataPoint( + ) -> *const rosidl_message_type_support_t; + pub fn statistics_msgs__msg__StatisticDataType__create( + ) -> *mut statistics_msgs__msg__StatisticDataType; + pub fn statistics_msgs__msg__StatisticDataType__destroy( + msg: *mut statistics_msgs__msg__StatisticDataType, + ); + pub fn statistics_msgs__msg__StatisticDataType__Sequence__init( + array: *mut statistics_msgs__msg__StatisticDataType__Sequence, + size: usize, + ) -> bool; + pub fn statistics_msgs__msg__StatisticDataType__Sequence__fini( + array: *mut statistics_msgs__msg__StatisticDataType__Sequence, + ); + pub fn statistics_msgs__msg__StatisticDataType__Sequence__create( + size: usize, + ) -> *mut statistics_msgs__msg__StatisticDataType__Sequence; + pub fn statistics_msgs__msg__StatisticDataType__Sequence__destroy( + array: *mut statistics_msgs__msg__StatisticDataType__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataType( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Bool__create() -> *mut std_msgs__msg__Bool; + pub fn std_msgs__msg__Bool__destroy(msg: *mut std_msgs__msg__Bool); + pub fn std_msgs__msg__Bool__Sequence__init( + array: *mut std_msgs__msg__Bool__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Bool__Sequence__fini(array: *mut std_msgs__msg__Bool__Sequence); + pub fn std_msgs__msg__Bool__Sequence__create(size: usize) + -> *mut std_msgs__msg__Bool__Sequence; + pub fn std_msgs__msg__Bool__Sequence__destroy(array: *mut std_msgs__msg__Bool__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Bool( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Byte__create() -> *mut std_msgs__msg__Byte; + pub fn std_msgs__msg__Byte__destroy(msg: *mut std_msgs__msg__Byte); + pub fn std_msgs__msg__Byte__Sequence__init( + array: *mut std_msgs__msg__Byte__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Byte__Sequence__fini(array: *mut std_msgs__msg__Byte__Sequence); + pub fn std_msgs__msg__Byte__Sequence__create(size: usize) + -> *mut std_msgs__msg__Byte__Sequence; + pub fn std_msgs__msg__Byte__Sequence__destroy(array: *mut std_msgs__msg__Byte__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Byte( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__ByteMultiArray__create() -> *mut std_msgs__msg__ByteMultiArray; + pub fn std_msgs__msg__ByteMultiArray__destroy(msg: *mut std_msgs__msg__ByteMultiArray); + pub fn std_msgs__msg__ByteMultiArray__Sequence__init( + array: *mut std_msgs__msg__ByteMultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__ByteMultiArray__Sequence__fini( + array: *mut std_msgs__msg__ByteMultiArray__Sequence, + ); + pub fn std_msgs__msg__ByteMultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__ByteMultiArray__Sequence; + pub fn std_msgs__msg__ByteMultiArray__Sequence__destroy( + array: *mut std_msgs__msg__ByteMultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__ByteMultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Char__create() -> *mut std_msgs__msg__Char; + pub fn std_msgs__msg__Char__destroy(msg: *mut std_msgs__msg__Char); + pub fn std_msgs__msg__Char__Sequence__init( + array: *mut std_msgs__msg__Char__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Char__Sequence__fini(array: *mut std_msgs__msg__Char__Sequence); + pub fn std_msgs__msg__Char__Sequence__create(size: usize) + -> *mut std_msgs__msg__Char__Sequence; + pub fn std_msgs__msg__Char__Sequence__destroy(array: *mut std_msgs__msg__Char__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Char( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__ColorRGBA__create() -> *mut std_msgs__msg__ColorRGBA; + pub fn std_msgs__msg__ColorRGBA__destroy(msg: *mut std_msgs__msg__ColorRGBA); + pub fn std_msgs__msg__ColorRGBA__Sequence__init( + array: *mut std_msgs__msg__ColorRGBA__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__ColorRGBA__Sequence__fini(array: *mut std_msgs__msg__ColorRGBA__Sequence); + pub fn std_msgs__msg__ColorRGBA__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__ColorRGBA__Sequence; + pub fn std_msgs__msg__ColorRGBA__Sequence__destroy( + array: *mut std_msgs__msg__ColorRGBA__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__ColorRGBA( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Bool( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Byte( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ByteMultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Char( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ColorRGBA( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Empty( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Header( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayDimension( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayLayout( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__String( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Empty__create() -> *mut std_msgs__msg__Empty; + pub fn std_msgs__msg__Empty__destroy(msg: *mut std_msgs__msg__Empty); + pub fn std_msgs__msg__Empty__Sequence__init( + array: *mut std_msgs__msg__Empty__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Empty__Sequence__fini(array: *mut std_msgs__msg__Empty__Sequence); + pub fn std_msgs__msg__Empty__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Empty__Sequence; + pub fn std_msgs__msg__Empty__Sequence__destroy(array: *mut std_msgs__msg__Empty__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Empty( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Float32__create() -> *mut std_msgs__msg__Float32; + pub fn std_msgs__msg__Float32__destroy(msg: *mut std_msgs__msg__Float32); + pub fn std_msgs__msg__Float32__Sequence__init( + array: *mut std_msgs__msg__Float32__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Float32__Sequence__fini(array: *mut std_msgs__msg__Float32__Sequence); + pub fn std_msgs__msg__Float32__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Float32__Sequence; + pub fn std_msgs__msg__Float32__Sequence__destroy(array: *mut std_msgs__msg__Float32__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float32( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Float32MultiArray__create() -> *mut std_msgs__msg__Float32MultiArray; + pub fn std_msgs__msg__Float32MultiArray__destroy(msg: *mut std_msgs__msg__Float32MultiArray); + pub fn std_msgs__msg__Float32MultiArray__Sequence__init( + array: *mut std_msgs__msg__Float32MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Float32MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Float32MultiArray__Sequence, + ); + pub fn std_msgs__msg__Float32MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Float32MultiArray__Sequence; + pub fn std_msgs__msg__Float32MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Float32MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Float64__create() -> *mut std_msgs__msg__Float64; + pub fn std_msgs__msg__Float64__destroy(msg: *mut std_msgs__msg__Float64); + pub fn std_msgs__msg__Float64__Sequence__init( + array: *mut std_msgs__msg__Float64__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Float64__Sequence__fini(array: *mut std_msgs__msg__Float64__Sequence); + pub fn std_msgs__msg__Float64__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Float64__Sequence; + pub fn std_msgs__msg__Float64__Sequence__destroy(array: *mut std_msgs__msg__Float64__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float64( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Float64MultiArray__create() -> *mut std_msgs__msg__Float64MultiArray; + pub fn std_msgs__msg__Float64MultiArray__destroy(msg: *mut std_msgs__msg__Float64MultiArray); + pub fn std_msgs__msg__Float64MultiArray__Sequence__init( + array: *mut std_msgs__msg__Float64MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Float64MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Float64MultiArray__Sequence, + ); + pub fn std_msgs__msg__Float64MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Float64MultiArray__Sequence; + pub fn std_msgs__msg__Float64MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Float64MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Header__create() -> *mut std_msgs__msg__Header; + pub fn std_msgs__msg__Header__destroy(msg: *mut std_msgs__msg__Header); + pub fn std_msgs__msg__Header__Sequence__init( + array: *mut std_msgs__msg__Header__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Header__Sequence__fini(array: *mut std_msgs__msg__Header__Sequence); + pub fn std_msgs__msg__Header__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Header__Sequence; + pub fn std_msgs__msg__Header__Sequence__destroy(array: *mut std_msgs__msg__Header__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Header( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int16__create() -> *mut std_msgs__msg__Int16; + pub fn std_msgs__msg__Int16__destroy(msg: *mut std_msgs__msg__Int16); + pub fn std_msgs__msg__Int16__Sequence__init( + array: *mut std_msgs__msg__Int16__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int16__Sequence__fini(array: *mut std_msgs__msg__Int16__Sequence); + pub fn std_msgs__msg__Int16__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int16__Sequence; + pub fn std_msgs__msg__Int16__Sequence__destroy(array: *mut std_msgs__msg__Int16__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int16( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int16MultiArray__create() -> *mut std_msgs__msg__Int16MultiArray; + pub fn std_msgs__msg__Int16MultiArray__destroy(msg: *mut std_msgs__msg__Int16MultiArray); + pub fn std_msgs__msg__Int16MultiArray__Sequence__init( + array: *mut std_msgs__msg__Int16MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int16MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Int16MultiArray__Sequence, + ); + pub fn std_msgs__msg__Int16MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int16MultiArray__Sequence; + pub fn std_msgs__msg__Int16MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Int16MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int16MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int32__create() -> *mut std_msgs__msg__Int32; + pub fn std_msgs__msg__Int32__destroy(msg: *mut std_msgs__msg__Int32); + pub fn std_msgs__msg__Int32__Sequence__init( + array: *mut std_msgs__msg__Int32__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int32__Sequence__fini(array: *mut std_msgs__msg__Int32__Sequence); + pub fn std_msgs__msg__Int32__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int32__Sequence; + pub fn std_msgs__msg__Int32__Sequence__destroy(array: *mut std_msgs__msg__Int32__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int32MultiArray__create() -> *mut std_msgs__msg__Int32MultiArray; + pub fn std_msgs__msg__Int32MultiArray__destroy(msg: *mut std_msgs__msg__Int32MultiArray); + pub fn std_msgs__msg__Int32MultiArray__Sequence__init( + array: *mut std_msgs__msg__Int32MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int32MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Int32MultiArray__Sequence, + ); + pub fn std_msgs__msg__Int32MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int32MultiArray__Sequence; + pub fn std_msgs__msg__Int32MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Int32MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int64__create() -> *mut std_msgs__msg__Int64; + pub fn std_msgs__msg__Int64__destroy(msg: *mut std_msgs__msg__Int64); + pub fn std_msgs__msg__Int64__Sequence__init( + array: *mut std_msgs__msg__Int64__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int64__Sequence__fini(array: *mut std_msgs__msg__Int64__Sequence); + pub fn std_msgs__msg__Int64__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int64__Sequence; + pub fn std_msgs__msg__Int64__Sequence__destroy(array: *mut std_msgs__msg__Int64__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int64( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int64MultiArray__create() -> *mut std_msgs__msg__Int64MultiArray; + pub fn std_msgs__msg__Int64MultiArray__destroy(msg: *mut std_msgs__msg__Int64MultiArray); + pub fn std_msgs__msg__Int64MultiArray__Sequence__init( + array: *mut std_msgs__msg__Int64MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int64MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Int64MultiArray__Sequence, + ); + pub fn std_msgs__msg__Int64MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int64MultiArray__Sequence; + pub fn std_msgs__msg__Int64MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Int64MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int8__create() -> *mut std_msgs__msg__Int8; + pub fn std_msgs__msg__Int8__destroy(msg: *mut std_msgs__msg__Int8); + pub fn std_msgs__msg__Int8__Sequence__init( + array: *mut std_msgs__msg__Int8__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int8__Sequence__fini(array: *mut std_msgs__msg__Int8__Sequence); + pub fn std_msgs__msg__Int8__Sequence__create(size: usize) + -> *mut std_msgs__msg__Int8__Sequence; + pub fn std_msgs__msg__Int8__Sequence__destroy(array: *mut std_msgs__msg__Int8__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int8( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__Int8MultiArray__create() -> *mut std_msgs__msg__Int8MultiArray; + pub fn std_msgs__msg__Int8MultiArray__destroy(msg: *mut std_msgs__msg__Int8MultiArray); + pub fn std_msgs__msg__Int8MultiArray__Sequence__init( + array: *mut std_msgs__msg__Int8MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__Int8MultiArray__Sequence__fini( + array: *mut std_msgs__msg__Int8MultiArray__Sequence, + ); + pub fn std_msgs__msg__Int8MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__Int8MultiArray__Sequence; + pub fn std_msgs__msg__Int8MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__Int8MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int8MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__MultiArrayDimension__create() -> *mut std_msgs__msg__MultiArrayDimension; + pub fn std_msgs__msg__MultiArrayDimension__destroy( + msg: *mut std_msgs__msg__MultiArrayDimension, + ); + pub fn std_msgs__msg__MultiArrayDimension__Sequence__init( + array: *mut std_msgs__msg__MultiArrayDimension__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__MultiArrayDimension__Sequence__fini( + array: *mut std_msgs__msg__MultiArrayDimension__Sequence, + ); + pub fn std_msgs__msg__MultiArrayDimension__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__MultiArrayDimension__Sequence; + pub fn std_msgs__msg__MultiArrayDimension__Sequence__destroy( + array: *mut std_msgs__msg__MultiArrayDimension__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__MultiArrayDimension( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__MultiArrayLayout__create() -> *mut std_msgs__msg__MultiArrayLayout; + pub fn std_msgs__msg__MultiArrayLayout__destroy(msg: *mut std_msgs__msg__MultiArrayLayout); + pub fn std_msgs__msg__MultiArrayLayout__Sequence__init( + array: *mut std_msgs__msg__MultiArrayLayout__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__MultiArrayLayout__Sequence__fini( + array: *mut std_msgs__msg__MultiArrayLayout__Sequence, + ); + pub fn std_msgs__msg__MultiArrayLayout__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__MultiArrayLayout__Sequence; + pub fn std_msgs__msg__MultiArrayLayout__Sequence__destroy( + array: *mut std_msgs__msg__MultiArrayLayout__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__MultiArrayLayout( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__String__create() -> *mut std_msgs__msg__String; + pub fn std_msgs__msg__String__destroy(msg: *mut std_msgs__msg__String); + pub fn std_msgs__msg__String__Sequence__init( + array: *mut std_msgs__msg__String__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__String__Sequence__fini(array: *mut std_msgs__msg__String__Sequence); + pub fn std_msgs__msg__String__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__String__Sequence; + pub fn std_msgs__msg__String__Sequence__destroy(array: *mut std_msgs__msg__String__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__String( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt16__create() -> *mut std_msgs__msg__UInt16; + pub fn std_msgs__msg__UInt16__destroy(msg: *mut std_msgs__msg__UInt16); + pub fn std_msgs__msg__UInt16__Sequence__init( + array: *mut std_msgs__msg__UInt16__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt16__Sequence__fini(array: *mut std_msgs__msg__UInt16__Sequence); + pub fn std_msgs__msg__UInt16__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt16__Sequence; + pub fn std_msgs__msg__UInt16__Sequence__destroy(array: *mut std_msgs__msg__UInt16__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt16( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt16MultiArray__create() -> *mut std_msgs__msg__UInt16MultiArray; + pub fn std_msgs__msg__UInt16MultiArray__destroy(msg: *mut std_msgs__msg__UInt16MultiArray); + pub fn std_msgs__msg__UInt16MultiArray__Sequence__init( + array: *mut std_msgs__msg__UInt16MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt16MultiArray__Sequence__fini( + array: *mut std_msgs__msg__UInt16MultiArray__Sequence, + ); + pub fn std_msgs__msg__UInt16MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt16MultiArray__Sequence; + pub fn std_msgs__msg__UInt16MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__UInt16MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt16MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt32__create() -> *mut std_msgs__msg__UInt32; + pub fn std_msgs__msg__UInt32__destroy(msg: *mut std_msgs__msg__UInt32); + pub fn std_msgs__msg__UInt32__Sequence__init( + array: *mut std_msgs__msg__UInt32__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt32__Sequence__fini(array: *mut std_msgs__msg__UInt32__Sequence); + pub fn std_msgs__msg__UInt32__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt32__Sequence; + pub fn std_msgs__msg__UInt32__Sequence__destroy(array: *mut std_msgs__msg__UInt32__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt32( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt32MultiArray__create() -> *mut std_msgs__msg__UInt32MultiArray; + pub fn std_msgs__msg__UInt32MultiArray__destroy(msg: *mut std_msgs__msg__UInt32MultiArray); + pub fn std_msgs__msg__UInt32MultiArray__Sequence__init( + array: *mut std_msgs__msg__UInt32MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt32MultiArray__Sequence__fini( + array: *mut std_msgs__msg__UInt32MultiArray__Sequence, + ); + pub fn std_msgs__msg__UInt32MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt32MultiArray__Sequence; + pub fn std_msgs__msg__UInt32MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__UInt32MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt32MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt64__create() -> *mut std_msgs__msg__UInt64; + pub fn std_msgs__msg__UInt64__destroy(msg: *mut std_msgs__msg__UInt64); + pub fn std_msgs__msg__UInt64__Sequence__init( + array: *mut std_msgs__msg__UInt64__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt64__Sequence__fini(array: *mut std_msgs__msg__UInt64__Sequence); + pub fn std_msgs__msg__UInt64__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt64__Sequence; + pub fn std_msgs__msg__UInt64__Sequence__destroy(array: *mut std_msgs__msg__UInt64__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt64( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt64MultiArray__create() -> *mut std_msgs__msg__UInt64MultiArray; + pub fn std_msgs__msg__UInt64MultiArray__destroy(msg: *mut std_msgs__msg__UInt64MultiArray); + pub fn std_msgs__msg__UInt64MultiArray__Sequence__init( + array: *mut std_msgs__msg__UInt64MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt64MultiArray__Sequence__fini( + array: *mut std_msgs__msg__UInt64MultiArray__Sequence, + ); + pub fn std_msgs__msg__UInt64MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt64MultiArray__Sequence; + pub fn std_msgs__msg__UInt64MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__UInt64MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt64MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt8__create() -> *mut std_msgs__msg__UInt8; + pub fn std_msgs__msg__UInt8__destroy(msg: *mut std_msgs__msg__UInt8); + pub fn std_msgs__msg__UInt8__Sequence__init( + array: *mut std_msgs__msg__UInt8__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt8__Sequence__fini(array: *mut std_msgs__msg__UInt8__Sequence); + pub fn std_msgs__msg__UInt8__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt8__Sequence; + pub fn std_msgs__msg__UInt8__Sequence__destroy(array: *mut std_msgs__msg__UInt8__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt8( + ) -> *const rosidl_message_type_support_t; + pub fn std_msgs__msg__UInt8MultiArray__create() -> *mut std_msgs__msg__UInt8MultiArray; + pub fn std_msgs__msg__UInt8MultiArray__destroy(msg: *mut std_msgs__msg__UInt8MultiArray); + pub fn std_msgs__msg__UInt8MultiArray__Sequence__init( + array: *mut std_msgs__msg__UInt8MultiArray__Sequence, + size: usize, + ) -> bool; + pub fn std_msgs__msg__UInt8MultiArray__Sequence__fini( + array: *mut std_msgs__msg__UInt8MultiArray__Sequence, + ); + pub fn std_msgs__msg__UInt8MultiArray__Sequence__create( + size: usize, + ) -> *mut std_msgs__msg__UInt8MultiArray__Sequence; + pub fn std_msgs__msg__UInt8MultiArray__Sequence__destroy( + array: *mut std_msgs__msg__UInt8MultiArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt8MultiArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__stereo_msgs__msg__DisparityImage( + ) -> *const rosidl_message_type_support_t; + pub fn stereo_msgs__msg__DisparityImage__create() -> *mut stereo_msgs__msg__DisparityImage; + pub fn stereo_msgs__msg__DisparityImage__destroy(msg: *mut stereo_msgs__msg__DisparityImage); + pub fn stereo_msgs__msg__DisparityImage__Sequence__init( + array: *mut stereo_msgs__msg__DisparityImage__Sequence, + size: usize, + ) -> bool; + pub fn stereo_msgs__msg__DisparityImage__Sequence__fini( + array: *mut stereo_msgs__msg__DisparityImage__Sequence, + ); + pub fn stereo_msgs__msg__DisparityImage__Sequence__create( + size: usize, + ) -> *mut stereo_msgs__msg__DisparityImage__Sequence; + pub fn stereo_msgs__msg__DisparityImage__Sequence__destroy( + array: *mut stereo_msgs__msg__DisparityImage__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__stereo_msgs__msg__DisparityImage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__Fibonacci_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__Fibonacci_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__NestedMessage_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__NestedMessage_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__action__Fibonacci_Goal__create() -> *mut test_msgs__action__Fibonacci_Goal; + pub fn test_msgs__action__Fibonacci_Goal__destroy(msg: *mut test_msgs__action__Fibonacci_Goal); + pub fn test_msgs__action__Fibonacci_Goal__Sequence__init( + array: *mut test_msgs__action__Fibonacci_Goal__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_Goal__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_Goal__Sequence, + ); + pub fn test_msgs__action__Fibonacci_Goal__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_Goal__Sequence; + pub fn test_msgs__action__Fibonacci_Goal__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_Goal__Sequence, + ); + pub fn test_msgs__action__Fibonacci_Result__create() -> *mut test_msgs__action__Fibonacci_Result; + pub fn test_msgs__action__Fibonacci_Result__destroy( + msg: *mut test_msgs__action__Fibonacci_Result, + ); + pub fn test_msgs__action__Fibonacci_Result__Sequence__init( + array: *mut test_msgs__action__Fibonacci_Result__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_Result__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_Result__Sequence, + ); + pub fn test_msgs__action__Fibonacci_Result__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_Result__Sequence; + pub fn test_msgs__action__Fibonacci_Result__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_Result__Sequence, + ); + pub fn test_msgs__action__Fibonacci_Feedback__create( + ) -> *mut test_msgs__action__Fibonacci_Feedback; + pub fn test_msgs__action__Fibonacci_Feedback__destroy( + msg: *mut test_msgs__action__Fibonacci_Feedback, + ); + pub fn test_msgs__action__Fibonacci_Feedback__Sequence__init( + array: *mut test_msgs__action__Fibonacci_Feedback__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_Feedback__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_Feedback__Sequence, + ); + pub fn test_msgs__action__Fibonacci_Feedback__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_Feedback__Sequence; + pub fn test_msgs__action__Fibonacci_Feedback__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_Feedback__Sequence, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Request__create( + ) -> *mut test_msgs__action__Fibonacci_SendGoal_Request; + pub fn test_msgs__action__Fibonacci_SendGoal_Request__destroy( + msg: *mut test_msgs__action__Fibonacci_SendGoal_Request, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__init( + array: *mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence; + pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Response__create( + ) -> *mut test_msgs__action__Fibonacci_SendGoal_Response; + pub fn test_msgs__action__Fibonacci_SendGoal_Response__destroy( + msg: *mut test_msgs__action__Fibonacci_SendGoal_Response, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__init( + array: *mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence, + ); + pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence; + pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Request__create( + ) -> *mut test_msgs__action__Fibonacci_GetResult_Request; + pub fn test_msgs__action__Fibonacci_GetResult_Request__destroy( + msg: *mut test_msgs__action__Fibonacci_GetResult_Request, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__init( + array: *mut test_msgs__action__Fibonacci_GetResult_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_GetResult_Request__Sequence, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_GetResult_Request__Sequence; + pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_GetResult_Request__Sequence, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Response__create( + ) -> *mut test_msgs__action__Fibonacci_GetResult_Response; + pub fn test_msgs__action__Fibonacci_GetResult_Response__destroy( + msg: *mut test_msgs__action__Fibonacci_GetResult_Response, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__init( + array: *mut test_msgs__action__Fibonacci_GetResult_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_GetResult_Response__Sequence, + ); + pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_GetResult_Response__Sequence; + pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_GetResult_Response__Sequence, + ); + pub fn test_msgs__action__Fibonacci_FeedbackMessage__create( + ) -> *mut test_msgs__action__Fibonacci_FeedbackMessage; + pub fn test_msgs__action__Fibonacci_FeedbackMessage__destroy( + msg: *mut test_msgs__action__Fibonacci_FeedbackMessage, + ); + pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__init( + array: *mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__fini( + array: *mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence, + ); + pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence; + pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__destroy( + array: *mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence, + ); + pub fn rosidl_typesupport_c__get_action_type_support_handle__test_msgs__action__Fibonacci( + ) -> *const rosidl_action_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__Fibonacci_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__Fibonacci_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__action__NestedMessage_Goal__create( + ) -> *mut test_msgs__action__NestedMessage_Goal; + pub fn test_msgs__action__NestedMessage_Goal__destroy( + msg: *mut test_msgs__action__NestedMessage_Goal, + ); + pub fn test_msgs__action__NestedMessage_Goal__Sequence__init( + array: *mut test_msgs__action__NestedMessage_Goal__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_Goal__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_Goal__Sequence, + ); + pub fn test_msgs__action__NestedMessage_Goal__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_Goal__Sequence; + pub fn test_msgs__action__NestedMessage_Goal__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_Goal__Sequence, + ); + pub fn test_msgs__action__NestedMessage_Result__create( + ) -> *mut test_msgs__action__NestedMessage_Result; + pub fn test_msgs__action__NestedMessage_Result__destroy( + msg: *mut test_msgs__action__NestedMessage_Result, + ); + pub fn test_msgs__action__NestedMessage_Result__Sequence__init( + array: *mut test_msgs__action__NestedMessage_Result__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_Result__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_Result__Sequence, + ); + pub fn test_msgs__action__NestedMessage_Result__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_Result__Sequence; + pub fn test_msgs__action__NestedMessage_Result__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_Result__Sequence, + ); + pub fn test_msgs__action__NestedMessage_Feedback__create( + ) -> *mut test_msgs__action__NestedMessage_Feedback; + pub fn test_msgs__action__NestedMessage_Feedback__destroy( + msg: *mut test_msgs__action__NestedMessage_Feedback, + ); + pub fn test_msgs__action__NestedMessage_Feedback__Sequence__init( + array: *mut test_msgs__action__NestedMessage_Feedback__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_Feedback__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_Feedback__Sequence, + ); + pub fn test_msgs__action__NestedMessage_Feedback__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_Feedback__Sequence; + pub fn test_msgs__action__NestedMessage_Feedback__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_Feedback__Sequence, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Request__create( + ) -> *mut test_msgs__action__NestedMessage_SendGoal_Request; + pub fn test_msgs__action__NestedMessage_SendGoal_Request__destroy( + msg: *mut test_msgs__action__NestedMessage_SendGoal_Request, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__init( + array: *mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence; + pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Response__create( + ) -> *mut test_msgs__action__NestedMessage_SendGoal_Response; + pub fn test_msgs__action__NestedMessage_SendGoal_Response__destroy( + msg: *mut test_msgs__action__NestedMessage_SendGoal_Response, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__init( + array: *mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence, + ); + pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence; + pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Request__create( + ) -> *mut test_msgs__action__NestedMessage_GetResult_Request; + pub fn test_msgs__action__NestedMessage_GetResult_Request__destroy( + msg: *mut test_msgs__action__NestedMessage_GetResult_Request, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__init( + array: *mut test_msgs__action__NestedMessage_GetResult_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_GetResult_Request__Sequence, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_GetResult_Request__Sequence; + pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_GetResult_Request__Sequence, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Response__create( + ) -> *mut test_msgs__action__NestedMessage_GetResult_Response; + pub fn test_msgs__action__NestedMessage_GetResult_Response__destroy( + msg: *mut test_msgs__action__NestedMessage_GetResult_Response, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__init( + array: *mut test_msgs__action__NestedMessage_GetResult_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_GetResult_Response__Sequence, + ); + pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_GetResult_Response__Sequence; + pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_GetResult_Response__Sequence, + ); + pub fn test_msgs__action__NestedMessage_FeedbackMessage__create( + ) -> *mut test_msgs__action__NestedMessage_FeedbackMessage; + pub fn test_msgs__action__NestedMessage_FeedbackMessage__destroy( + msg: *mut test_msgs__action__NestedMessage_FeedbackMessage, + ); + pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__init( + array: *mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__fini( + array: *mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence, + ); + pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__create( + size: usize, + ) -> *mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence; + pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__destroy( + array: *mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence, + ); + pub fn rosidl_typesupport_c__get_action_type_support_handle__test_msgs__action__NestedMessage( + ) -> *const rosidl_action_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__NestedMessage_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__NestedMessage_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Arrays__create() -> *mut test_msgs__msg__Arrays; + pub fn test_msgs__msg__Arrays__destroy(msg: *mut test_msgs__msg__Arrays); + pub fn test_msgs__msg__Arrays__Sequence__init( + array: *mut test_msgs__msg__Arrays__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Arrays__Sequence__fini(array: *mut test_msgs__msg__Arrays__Sequence); + pub fn test_msgs__msg__Arrays__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Arrays__Sequence; + pub fn test_msgs__msg__Arrays__Sequence__destroy(array: *mut test_msgs__msg__Arrays__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Arrays( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__BasicTypes__create() -> *mut test_msgs__msg__BasicTypes; + pub fn test_msgs__msg__BasicTypes__destroy(msg: *mut test_msgs__msg__BasicTypes); + pub fn test_msgs__msg__BasicTypes__Sequence__init( + array: *mut test_msgs__msg__BasicTypes__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__BasicTypes__Sequence__fini( + array: *mut test_msgs__msg__BasicTypes__Sequence, + ); + pub fn test_msgs__msg__BasicTypes__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__BasicTypes__Sequence; + pub fn test_msgs__msg__BasicTypes__Sequence__destroy( + array: *mut test_msgs__msg__BasicTypes__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BasicTypes( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__BoundedPlainSequences__create( + ) -> *mut test_msgs__msg__BoundedPlainSequences; + pub fn test_msgs__msg__BoundedPlainSequences__destroy( + msg: *mut test_msgs__msg__BoundedPlainSequences, + ); + pub fn test_msgs__msg__BoundedPlainSequences__Sequence__init( + array: *mut test_msgs__msg__BoundedPlainSequences__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__BoundedPlainSequences__Sequence__fini( + array: *mut test_msgs__msg__BoundedPlainSequences__Sequence, + ); + pub fn test_msgs__msg__BoundedPlainSequences__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__BoundedPlainSequences__Sequence; + pub fn test_msgs__msg__BoundedPlainSequences__Sequence__destroy( + array: *mut test_msgs__msg__BoundedPlainSequences__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BoundedPlainSequences( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__BoundedSequences__create() -> *mut test_msgs__msg__BoundedSequences; + pub fn test_msgs__msg__BoundedSequences__destroy(msg: *mut test_msgs__msg__BoundedSequences); + pub fn test_msgs__msg__BoundedSequences__Sequence__init( + array: *mut test_msgs__msg__BoundedSequences__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__BoundedSequences__Sequence__fini( + array: *mut test_msgs__msg__BoundedSequences__Sequence, + ); + pub fn test_msgs__msg__BoundedSequences__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__BoundedSequences__Sequence; + pub fn test_msgs__msg__BoundedSequences__Sequence__destroy( + array: *mut test_msgs__msg__BoundedSequences__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BoundedSequences( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Builtins__create() -> *mut test_msgs__msg__Builtins; + pub fn test_msgs__msg__Builtins__destroy(msg: *mut test_msgs__msg__Builtins); + pub fn test_msgs__msg__Builtins__Sequence__init( + array: *mut test_msgs__msg__Builtins__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Builtins__Sequence__fini(array: *mut test_msgs__msg__Builtins__Sequence); + pub fn test_msgs__msg__Builtins__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Builtins__Sequence; + pub fn test_msgs__msg__Builtins__Sequence__destroy( + array: *mut test_msgs__msg__Builtins__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Builtins( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Constants__create() -> *mut test_msgs__msg__Constants; + pub fn test_msgs__msg__Constants__destroy(msg: *mut test_msgs__msg__Constants); + pub fn test_msgs__msg__Constants__Sequence__init( + array: *mut test_msgs__msg__Constants__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Constants__Sequence__fini( + array: *mut test_msgs__msg__Constants__Sequence, + ); + pub fn test_msgs__msg__Constants__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Constants__Sequence; + pub fn test_msgs__msg__Constants__Sequence__destroy( + array: *mut test_msgs__msg__Constants__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Constants( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Defaults__create() -> *mut test_msgs__msg__Defaults; + pub fn test_msgs__msg__Defaults__destroy(msg: *mut test_msgs__msg__Defaults); + pub fn test_msgs__msg__Defaults__Sequence__init( + array: *mut test_msgs__msg__Defaults__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Defaults__Sequence__fini(array: *mut test_msgs__msg__Defaults__Sequence); + pub fn test_msgs__msg__Defaults__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Defaults__Sequence; + pub fn test_msgs__msg__Defaults__Sequence__destroy( + array: *mut test_msgs__msg__Defaults__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Defaults( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Arrays( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BasicTypes( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedPlainSequences( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedSequences( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Builtins( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Constants( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Defaults( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Empty( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__MultiNested( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Nested( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Strings( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__UnboundedSequences( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__WStrings( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Empty__create() -> *mut test_msgs__msg__Empty; + pub fn test_msgs__msg__Empty__destroy(msg: *mut test_msgs__msg__Empty); + pub fn test_msgs__msg__Empty__Sequence__init( + array: *mut test_msgs__msg__Empty__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Empty__Sequence__fini(array: *mut test_msgs__msg__Empty__Sequence); + pub fn test_msgs__msg__Empty__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Empty__Sequence; + pub fn test_msgs__msg__Empty__Sequence__destroy(array: *mut test_msgs__msg__Empty__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Empty( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__MultiNested__create() -> *mut test_msgs__msg__MultiNested; + pub fn test_msgs__msg__MultiNested__destroy(msg: *mut test_msgs__msg__MultiNested); + pub fn test_msgs__msg__MultiNested__Sequence__init( + array: *mut test_msgs__msg__MultiNested__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__MultiNested__Sequence__fini( + array: *mut test_msgs__msg__MultiNested__Sequence, + ); + pub fn test_msgs__msg__MultiNested__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__MultiNested__Sequence; + pub fn test_msgs__msg__MultiNested__Sequence__destroy( + array: *mut test_msgs__msg__MultiNested__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__MultiNested( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Nested__create() -> *mut test_msgs__msg__Nested; + pub fn test_msgs__msg__Nested__destroy(msg: *mut test_msgs__msg__Nested); + pub fn test_msgs__msg__Nested__Sequence__init( + array: *mut test_msgs__msg__Nested__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Nested__Sequence__fini(array: *mut test_msgs__msg__Nested__Sequence); + pub fn test_msgs__msg__Nested__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Nested__Sequence; + pub fn test_msgs__msg__Nested__Sequence__destroy(array: *mut test_msgs__msg__Nested__Sequence); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Nested( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__Strings__create() -> *mut test_msgs__msg__Strings; + pub fn test_msgs__msg__Strings__destroy(msg: *mut test_msgs__msg__Strings); + pub fn test_msgs__msg__Strings__Sequence__init( + array: *mut test_msgs__msg__Strings__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__Strings__Sequence__fini(array: *mut test_msgs__msg__Strings__Sequence); + pub fn test_msgs__msg__Strings__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__Strings__Sequence; + pub fn test_msgs__msg__Strings__Sequence__destroy( + array: *mut test_msgs__msg__Strings__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Strings( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__UnboundedSequences__create() -> *mut test_msgs__msg__UnboundedSequences; + pub fn test_msgs__msg__UnboundedSequences__destroy( + msg: *mut test_msgs__msg__UnboundedSequences, + ); + pub fn test_msgs__msg__UnboundedSequences__Sequence__init( + array: *mut test_msgs__msg__UnboundedSequences__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__UnboundedSequences__Sequence__fini( + array: *mut test_msgs__msg__UnboundedSequences__Sequence, + ); + pub fn test_msgs__msg__UnboundedSequences__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__UnboundedSequences__Sequence; + pub fn test_msgs__msg__UnboundedSequences__Sequence__destroy( + array: *mut test_msgs__msg__UnboundedSequences__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__UnboundedSequences( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__msg__WStrings__create() -> *mut test_msgs__msg__WStrings; + pub fn test_msgs__msg__WStrings__destroy(msg: *mut test_msgs__msg__WStrings); + pub fn test_msgs__msg__WStrings__Sequence__init( + array: *mut test_msgs__msg__WStrings__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__msg__WStrings__Sequence__fini(array: *mut test_msgs__msg__WStrings__Sequence); + pub fn test_msgs__msg__WStrings__Sequence__create( + size: usize, + ) -> *mut test_msgs__msg__WStrings__Sequence; + pub fn test_msgs__msg__WStrings__Sequence__destroy( + array: *mut test_msgs__msg__WStrings__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__WStrings( + ) -> *const rosidl_message_type_support_t; + pub fn test_msgs__srv__Arrays_Request__create() -> *mut test_msgs__srv__Arrays_Request; + pub fn test_msgs__srv__Arrays_Request__destroy(msg: *mut test_msgs__srv__Arrays_Request); + pub fn test_msgs__srv__Arrays_Request__Sequence__init( + array: *mut test_msgs__srv__Arrays_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__Arrays_Request__Sequence__fini( + array: *mut test_msgs__srv__Arrays_Request__Sequence, + ); + pub fn test_msgs__srv__Arrays_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__Arrays_Request__Sequence; + pub fn test_msgs__srv__Arrays_Request__Sequence__destroy( + array: *mut test_msgs__srv__Arrays_Request__Sequence, + ); + pub fn test_msgs__srv__Arrays_Response__create() -> *mut test_msgs__srv__Arrays_Response; + pub fn test_msgs__srv__Arrays_Response__destroy(msg: *mut test_msgs__srv__Arrays_Response); + pub fn test_msgs__srv__Arrays_Response__Sequence__init( + array: *mut test_msgs__srv__Arrays_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__Arrays_Response__Sequence__fini( + array: *mut test_msgs__srv__Arrays_Response__Sequence, + ); + pub fn test_msgs__srv__Arrays_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__Arrays_Response__Sequence; + pub fn test_msgs__srv__Arrays_Response__Sequence__destroy( + array: *mut test_msgs__srv__Arrays_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Arrays_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Arrays_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__Arrays( + ) -> *const rosidl_service_type_support_t; + pub fn test_msgs__srv__BasicTypes_Request__create() -> *mut test_msgs__srv__BasicTypes_Request; + pub fn test_msgs__srv__BasicTypes_Request__destroy( + msg: *mut test_msgs__srv__BasicTypes_Request, + ); + pub fn test_msgs__srv__BasicTypes_Request__Sequence__init( + array: *mut test_msgs__srv__BasicTypes_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__BasicTypes_Request__Sequence__fini( + array: *mut test_msgs__srv__BasicTypes_Request__Sequence, + ); + pub fn test_msgs__srv__BasicTypes_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__BasicTypes_Request__Sequence; + pub fn test_msgs__srv__BasicTypes_Request__Sequence__destroy( + array: *mut test_msgs__srv__BasicTypes_Request__Sequence, + ); + pub fn test_msgs__srv__BasicTypes_Response__create() -> *mut test_msgs__srv__BasicTypes_Response; + pub fn test_msgs__srv__BasicTypes_Response__destroy( + msg: *mut test_msgs__srv__BasicTypes_Response, + ); + pub fn test_msgs__srv__BasicTypes_Response__Sequence__init( + array: *mut test_msgs__srv__BasicTypes_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__BasicTypes_Response__Sequence__fini( + array: *mut test_msgs__srv__BasicTypes_Response__Sequence, + ); + pub fn test_msgs__srv__BasicTypes_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__BasicTypes_Response__Sequence; + pub fn test_msgs__srv__BasicTypes_Response__Sequence__destroy( + array: *mut test_msgs__srv__BasicTypes_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__BasicTypes( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__Arrays( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__BasicTypes( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__Empty( + ) -> *const rosidl_service_type_support_t; + pub fn test_msgs__srv__Empty_Request__create() -> *mut test_msgs__srv__Empty_Request; + pub fn test_msgs__srv__Empty_Request__destroy(msg: *mut test_msgs__srv__Empty_Request); + pub fn test_msgs__srv__Empty_Request__Sequence__init( + array: *mut test_msgs__srv__Empty_Request__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__Empty_Request__Sequence__fini( + array: *mut test_msgs__srv__Empty_Request__Sequence, + ); + pub fn test_msgs__srv__Empty_Request__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__Empty_Request__Sequence; + pub fn test_msgs__srv__Empty_Request__Sequence__destroy( + array: *mut test_msgs__srv__Empty_Request__Sequence, + ); + pub fn test_msgs__srv__Empty_Response__create() -> *mut test_msgs__srv__Empty_Response; + pub fn test_msgs__srv__Empty_Response__destroy(msg: *mut test_msgs__srv__Empty_Response); + pub fn test_msgs__srv__Empty_Response__Sequence__init( + array: *mut test_msgs__srv__Empty_Response__Sequence, + size: usize, + ) -> bool; + pub fn test_msgs__srv__Empty_Response__Sequence__fini( + array: *mut test_msgs__srv__Empty_Response__Sequence, + ); + pub fn test_msgs__srv__Empty_Response__Sequence__create( + size: usize, + ) -> *mut test_msgs__srv__Empty_Response__Sequence; + pub fn test_msgs__srv__Empty_Response__Sequence__destroy( + array: *mut test_msgs__srv__Empty_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Empty_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Empty_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__Empty( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn tf2_msgs__action__LookupTransform_Goal__create( + ) -> *mut tf2_msgs__action__LookupTransform_Goal; + pub fn tf2_msgs__action__LookupTransform_Goal__destroy( + msg: *mut tf2_msgs__action__LookupTransform_Goal, + ); + pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_Goal__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_Goal__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_Goal__Sequence; + pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_Goal__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_Result__create( + ) -> *mut tf2_msgs__action__LookupTransform_Result; + pub fn tf2_msgs__action__LookupTransform_Result__destroy( + msg: *mut tf2_msgs__action__LookupTransform_Result, + ); + pub fn tf2_msgs__action__LookupTransform_Result__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_Result__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_Result__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_Result__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_Result__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_Result__Sequence; + pub fn tf2_msgs__action__LookupTransform_Result__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_Result__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_Feedback__create( + ) -> *mut tf2_msgs__action__LookupTransform_Feedback; + pub fn tf2_msgs__action__LookupTransform_Feedback__destroy( + msg: *mut tf2_msgs__action__LookupTransform_Feedback, + ); + pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_Feedback__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_Feedback__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_Feedback__Sequence; + pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_Feedback__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__create( + ) -> *mut tf2_msgs__action__LookupTransform_SendGoal_Request; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__destroy( + msg: *mut tf2_msgs__action__LookupTransform_SendGoal_Request, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__create( + ) -> *mut tf2_msgs__action__LookupTransform_SendGoal_Response; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__destroy( + msg: *mut tf2_msgs__action__LookupTransform_SendGoal_Response, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence; + pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__create( + ) -> *mut tf2_msgs__action__LookupTransform_GetResult_Request; + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__destroy( + msg: *mut tf2_msgs__action__LookupTransform_GetResult_Request, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence; + pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__create( + ) -> *mut tf2_msgs__action__LookupTransform_GetResult_Response; + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__destroy( + msg: *mut tf2_msgs__action__LookupTransform_GetResult_Response, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence; + pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__create( + ) -> *mut tf2_msgs__action__LookupTransform_FeedbackMessage; + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__destroy( + msg: *mut tf2_msgs__action__LookupTransform_FeedbackMessage, + ); + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__init( + array: *mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__fini( + array: *mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence, + ); + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence; + pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__destroy( + array: *mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence, + ); + pub fn rosidl_typesupport_c__get_action_type_support_handle__tf2_msgs__action__LookupTransform( + ) -> *const rosidl_action_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Goal( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Result( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Feedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_GetResult( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_FeedbackMessage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TF2Error( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TFMessage( + ) -> *const rosidl_message_type_support_t; + pub fn tf2_msgs__msg__TF2Error__create() -> *mut tf2_msgs__msg__TF2Error; + pub fn tf2_msgs__msg__TF2Error__destroy(msg: *mut tf2_msgs__msg__TF2Error); + pub fn tf2_msgs__msg__TF2Error__Sequence__init( + array: *mut tf2_msgs__msg__TF2Error__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__msg__TF2Error__Sequence__fini(array: *mut tf2_msgs__msg__TF2Error__Sequence); + pub fn tf2_msgs__msg__TF2Error__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__msg__TF2Error__Sequence; + pub fn tf2_msgs__msg__TF2Error__Sequence__destroy( + array: *mut tf2_msgs__msg__TF2Error__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__msg__TF2Error( + ) -> *const rosidl_message_type_support_t; + pub fn tf2_msgs__msg__TFMessage__create() -> *mut tf2_msgs__msg__TFMessage; + pub fn tf2_msgs__msg__TFMessage__destroy(msg: *mut tf2_msgs__msg__TFMessage); + pub fn tf2_msgs__msg__TFMessage__Sequence__init( + array: *mut tf2_msgs__msg__TFMessage__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__msg__TFMessage__Sequence__fini(array: *mut tf2_msgs__msg__TFMessage__Sequence); + pub fn tf2_msgs__msg__TFMessage__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__msg__TFMessage__Sequence; + pub fn tf2_msgs__msg__TFMessage__Sequence__destroy( + array: *mut tf2_msgs__msg__TFMessage__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__msg__TFMessage( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__srv__FrameGraph( + ) -> *const rosidl_service_type_support_t; + pub fn tf2_msgs__srv__FrameGraph_Request__create() -> *mut tf2_msgs__srv__FrameGraph_Request; + pub fn tf2_msgs__srv__FrameGraph_Request__destroy(msg: *mut tf2_msgs__srv__FrameGraph_Request); + pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__init( + array: *mut tf2_msgs__srv__FrameGraph_Request__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__fini( + array: *mut tf2_msgs__srv__FrameGraph_Request__Sequence, + ); + pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__srv__FrameGraph_Request__Sequence; + pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__destroy( + array: *mut tf2_msgs__srv__FrameGraph_Request__Sequence, + ); + pub fn tf2_msgs__srv__FrameGraph_Response__create() -> *mut tf2_msgs__srv__FrameGraph_Response; + pub fn tf2_msgs__srv__FrameGraph_Response__destroy( + msg: *mut tf2_msgs__srv__FrameGraph_Response, + ); + pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__init( + array: *mut tf2_msgs__srv__FrameGraph_Response__Sequence, + size: usize, + ) -> bool; + pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__fini( + array: *mut tf2_msgs__srv__FrameGraph_Response__Sequence, + ); + pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__create( + size: usize, + ) -> *mut tf2_msgs__srv__FrameGraph_Response__Sequence; + pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__destroy( + array: *mut tf2_msgs__srv__FrameGraph_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__srv__FrameGraph( + ) -> *const rosidl_service_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectory( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectoryPoint( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectory( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectoryPoint( + ) -> *const rosidl_message_type_support_t; + pub fn trajectory_msgs__msg__JointTrajectory__create( + ) -> *mut trajectory_msgs__msg__JointTrajectory; + pub fn trajectory_msgs__msg__JointTrajectory__destroy( + msg: *mut trajectory_msgs__msg__JointTrajectory, + ); + pub fn trajectory_msgs__msg__JointTrajectory__Sequence__init( + array: *mut trajectory_msgs__msg__JointTrajectory__Sequence, + size: usize, + ) -> bool; + pub fn trajectory_msgs__msg__JointTrajectory__Sequence__fini( + array: *mut trajectory_msgs__msg__JointTrajectory__Sequence, + ); + pub fn trajectory_msgs__msg__JointTrajectory__Sequence__create( + size: usize, + ) -> *mut trajectory_msgs__msg__JointTrajectory__Sequence; + pub fn trajectory_msgs__msg__JointTrajectory__Sequence__destroy( + array: *mut trajectory_msgs__msg__JointTrajectory__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectory( + ) -> *const rosidl_message_type_support_t; + pub fn trajectory_msgs__msg__JointTrajectoryPoint__create( + ) -> *mut trajectory_msgs__msg__JointTrajectoryPoint; + pub fn trajectory_msgs__msg__JointTrajectoryPoint__destroy( + msg: *mut trajectory_msgs__msg__JointTrajectoryPoint, + ); + pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__init( + array: *mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence, + size: usize, + ) -> bool; + pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__fini( + array: *mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence, + ); + pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__create( + size: usize, + ) -> *mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence; + pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__destroy( + array: *mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectoryPoint( + ) -> *const rosidl_message_type_support_t; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__create( + ) -> *mut trajectory_msgs__msg__MultiDOFJointTrajectory; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__destroy( + msg: *mut trajectory_msgs__msg__MultiDOFJointTrajectory, + ); + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__init( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence, + size: usize, + ) -> bool; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__fini( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence, + ); + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__create( + size: usize, + ) -> *mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__destroy( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectory( + ) -> *const rosidl_message_type_support_t; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__create( + ) -> *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__destroy( + msg: *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint, + ); + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__init( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence, + size: usize, + ) -> bool; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__fini( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence, + ); + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__create( + size: usize, + ) -> *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence; + pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__destroy( + array: *mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectoryPoint( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__unique_identifier_msgs__msg__UUID( + ) -> *const rosidl_message_type_support_t; + pub fn unique_identifier_msgs__msg__UUID__create() -> *mut unique_identifier_msgs__msg__UUID; + pub fn unique_identifier_msgs__msg__UUID__destroy(msg: *mut unique_identifier_msgs__msg__UUID); + pub fn unique_identifier_msgs__msg__UUID__Sequence__init( + array: *mut unique_identifier_msgs__msg__UUID__Sequence, + size: usize, + ) -> bool; + pub fn unique_identifier_msgs__msg__UUID__Sequence__fini( + array: *mut unique_identifier_msgs__msg__UUID__Sequence, + ); + pub fn unique_identifier_msgs__msg__UUID__Sequence__create( + size: usize, + ) -> *mut unique_identifier_msgs__msg__UUID__Sequence; + pub fn unique_identifier_msgs__msg__UUID__Sequence__destroy( + array: *mut unique_identifier_msgs__msg__UUID__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__unique_identifier_msgs__msg__UUID( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__ImageMarker( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarker( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerControl( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerFeedback( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerInit( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerPose( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerUpdate( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__Marker( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MarkerArray( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MenuEntry( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MeshFile( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__UVCoordinate( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__ImageMarker__create( + ) -> *mut visualization_msgs__msg__ImageMarker; + pub fn visualization_msgs__msg__ImageMarker__destroy( + msg: *mut visualization_msgs__msg__ImageMarker, + ); + pub fn visualization_msgs__msg__ImageMarker__Sequence__init( + array: *mut visualization_msgs__msg__ImageMarker__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__ImageMarker__Sequence__fini( + array: *mut visualization_msgs__msg__ImageMarker__Sequence, + ); + pub fn visualization_msgs__msg__ImageMarker__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__ImageMarker__Sequence; + pub fn visualization_msgs__msg__ImageMarker__Sequence__destroy( + array: *mut visualization_msgs__msg__ImageMarker__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__ImageMarker( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarker__create( + ) -> *mut visualization_msgs__msg__InteractiveMarker; + pub fn visualization_msgs__msg__InteractiveMarker__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarker, + ); + pub fn visualization_msgs__msg__InteractiveMarker__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarker__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarker__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarker__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarker__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarker__Sequence; + pub fn visualization_msgs__msg__InteractiveMarker__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarker__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarker( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarkerControl__create( + ) -> *mut visualization_msgs__msg__InteractiveMarkerControl; + pub fn visualization_msgs__msg__InteractiveMarkerControl__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarkerControl, + ); + pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarkerControl__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarkerControl__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarkerControl__Sequence; + pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarkerControl__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerControl( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__create( + ) -> *mut visualization_msgs__msg__InteractiveMarkerFeedback; + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarkerFeedback, + ); + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence; + pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerFeedback( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarkerInit__create( + ) -> *mut visualization_msgs__msg__InteractiveMarkerInit; + pub fn visualization_msgs__msg__InteractiveMarkerInit__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarkerInit, + ); + pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarkerInit__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarkerInit__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarkerInit__Sequence; + pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarkerInit__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerInit( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarkerPose__create( + ) -> *mut visualization_msgs__msg__InteractiveMarkerPose; + pub fn visualization_msgs__msg__InteractiveMarkerPose__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarkerPose, + ); + pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarkerPose__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarkerPose__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarkerPose__Sequence; + pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarkerPose__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerPose( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__create( + ) -> *mut visualization_msgs__msg__InteractiveMarkerUpdate; + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__destroy( + msg: *mut visualization_msgs__msg__InteractiveMarkerUpdate, + ); + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__init( + array: *mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__fini( + array: *mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence, + ); + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence; + pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__destroy( + array: *mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerUpdate( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__Marker__create() -> *mut visualization_msgs__msg__Marker; + pub fn visualization_msgs__msg__Marker__destroy(msg: *mut visualization_msgs__msg__Marker); + pub fn visualization_msgs__msg__Marker__Sequence__init( + array: *mut visualization_msgs__msg__Marker__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__Marker__Sequence__fini( + array: *mut visualization_msgs__msg__Marker__Sequence, + ); + pub fn visualization_msgs__msg__Marker__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__Marker__Sequence; + pub fn visualization_msgs__msg__Marker__Sequence__destroy( + array: *mut visualization_msgs__msg__Marker__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__Marker( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__MarkerArray__create( + ) -> *mut visualization_msgs__msg__MarkerArray; + pub fn visualization_msgs__msg__MarkerArray__destroy( + msg: *mut visualization_msgs__msg__MarkerArray, + ); + pub fn visualization_msgs__msg__MarkerArray__Sequence__init( + array: *mut visualization_msgs__msg__MarkerArray__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__MarkerArray__Sequence__fini( + array: *mut visualization_msgs__msg__MarkerArray__Sequence, + ); + pub fn visualization_msgs__msg__MarkerArray__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__MarkerArray__Sequence; + pub fn visualization_msgs__msg__MarkerArray__Sequence__destroy( + array: *mut visualization_msgs__msg__MarkerArray__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MarkerArray( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__MenuEntry__create() -> *mut visualization_msgs__msg__MenuEntry; + pub fn visualization_msgs__msg__MenuEntry__destroy( + msg: *mut visualization_msgs__msg__MenuEntry, + ); + pub fn visualization_msgs__msg__MenuEntry__Sequence__init( + array: *mut visualization_msgs__msg__MenuEntry__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__MenuEntry__Sequence__fini( + array: *mut visualization_msgs__msg__MenuEntry__Sequence, + ); + pub fn visualization_msgs__msg__MenuEntry__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__MenuEntry__Sequence; + pub fn visualization_msgs__msg__MenuEntry__Sequence__destroy( + array: *mut visualization_msgs__msg__MenuEntry__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MenuEntry( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__MeshFile__create() -> *mut visualization_msgs__msg__MeshFile; + pub fn visualization_msgs__msg__MeshFile__destroy(msg: *mut visualization_msgs__msg__MeshFile); + pub fn visualization_msgs__msg__MeshFile__Sequence__init( + array: *mut visualization_msgs__msg__MeshFile__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__MeshFile__Sequence__fini( + array: *mut visualization_msgs__msg__MeshFile__Sequence, + ); + pub fn visualization_msgs__msg__MeshFile__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__MeshFile__Sequence; + pub fn visualization_msgs__msg__MeshFile__Sequence__destroy( + array: *mut visualization_msgs__msg__MeshFile__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MeshFile( + ) -> *const rosidl_message_type_support_t; + pub fn visualization_msgs__msg__UVCoordinate__create( + ) -> *mut visualization_msgs__msg__UVCoordinate; + pub fn visualization_msgs__msg__UVCoordinate__destroy( + msg: *mut visualization_msgs__msg__UVCoordinate, + ); + pub fn visualization_msgs__msg__UVCoordinate__Sequence__init( + array: *mut visualization_msgs__msg__UVCoordinate__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__msg__UVCoordinate__Sequence__fini( + array: *mut visualization_msgs__msg__UVCoordinate__Sequence, + ); + pub fn visualization_msgs__msg__UVCoordinate__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__msg__UVCoordinate__Sequence; + pub fn visualization_msgs__msg__UVCoordinate__Sequence__destroy( + array: *mut visualization_msgs__msg__UVCoordinate__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__UVCoordinate( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers( + ) -> *const rosidl_service_type_support_t; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__create( + ) -> *mut visualization_msgs__srv__GetInteractiveMarkers_Request; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__destroy( + msg: *mut visualization_msgs__srv__GetInteractiveMarkers_Request, + ); + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__init( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__fini( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence, + ); + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__destroy( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence, + ); + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__create( + ) -> *mut visualization_msgs__srv__GetInteractiveMarkers_Response; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__destroy( + msg: *mut visualization_msgs__srv__GetInteractiveMarkers_Response, + ); + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__init( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence, + size: usize, + ) -> bool; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__fini( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence, + ); + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__create( + size: usize, + ) -> *mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence; + pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__destroy( + array: *mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence, + ); + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Request( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Response( + ) -> *const rosidl_message_type_support_t; + pub fn rosidl_typesupport_c__get_service_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers( + ) -> *const rosidl_service_type_support_t; +} diff --git a/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings_doc_only.rs b/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings_doc_only.rs new file mode 100644 index 0000000000..043ed85a0e --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/bindings/msg_bindings_doc_only.rs @@ -0,0 +1 @@ +pub type rosidl_message_typesupport_handle_function = :: std :: option :: Option < unsafe extern "C" fn (arg1 : * const rosidl_message_type_support_t , arg2 : * const :: std :: os :: raw :: c_char ,) -> * const rosidl_message_type_support_t , > ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __uint_least16_t = __uint16_t ; pub type uint_least16_t = __uint_least16_t ; # [repr (C)] # [derive (Debug)] pub struct unique_identifier_msgs__msg__UUID { pub uuid : [u8 ; 16usize] , } # [test] fn bindgen_test_layout_unique_identifier_msgs__msg__UUID () { const UNINIT : :: std :: mem :: MaybeUninit < unique_identifier_msgs__msg__UUID > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< unique_identifier_msgs__msg__UUID > () , 16usize , concat ! ("Size of: " , stringify ! (unique_identifier_msgs__msg__UUID))) ; assert_eq ! (:: std :: mem :: align_of ::< unique_identifier_msgs__msg__UUID > () , 1usize , concat ! ("Alignment of " , stringify ! (unique_identifier_msgs__msg__UUID))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uuid) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (unique_identifier_msgs__msg__UUID) , "::" , stringify ! (uuid))) ; } # [repr (C)] # [derive (Debug)] pub struct unique_identifier_msgs__msg__UUID__Sequence { pub data : * mut unique_identifier_msgs__msg__UUID , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_unique_identifier_msgs__msg__UUID__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < unique_identifier_msgs__msg__UUID__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< unique_identifier_msgs__msg__UUID__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (unique_identifier_msgs__msg__UUID__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< unique_identifier_msgs__msg__UUID__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (unique_identifier_msgs__msg__UUID__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (unique_identifier_msgs__msg__UUID__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (unique_identifier_msgs__msg__UUID__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (unique_identifier_msgs__msg__UUID__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct builtin_interfaces__msg__Time { pub sec : i32 , pub nanosec : u32 , } # [test] fn bindgen_test_layout_builtin_interfaces__msg__Time () { const UNINIT : :: std :: mem :: MaybeUninit < builtin_interfaces__msg__Time > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< builtin_interfaces__msg__Time > () , 8usize , concat ! ("Size of: " , stringify ! (builtin_interfaces__msg__Time))) ; assert_eq ! (:: std :: mem :: align_of ::< builtin_interfaces__msg__Time > () , 4usize , concat ! ("Alignment of " , stringify ! (builtin_interfaces__msg__Time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . sec) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Time) , "::" , stringify ! (sec))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nanosec) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Time) , "::" , stringify ! (nanosec))) ; } # [repr (C)] # [derive (Debug)] pub struct builtin_interfaces__msg__Time__Sequence { pub data : * mut builtin_interfaces__msg__Time , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_builtin_interfaces__msg__Time__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < builtin_interfaces__msg__Time__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< builtin_interfaces__msg__Time__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (builtin_interfaces__msg__Time__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< builtin_interfaces__msg__Time__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (builtin_interfaces__msg__Time__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Time__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Time__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Time__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalInfo { pub goal_id : unique_identifier_msgs__msg__UUID , pub stamp : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalInfo () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalInfo > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalInfo > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalInfo))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalInfo > () , 4usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalInfo))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalInfo) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalInfo) , "::" , stringify ! (stamp))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalInfo__Sequence { pub data : * mut action_msgs__msg__GoalInfo , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalInfo__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalInfo__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalInfo__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalInfo__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalInfo__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalInfo__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalInfo__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalInfo__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalInfo__Sequence) , "::" , stringify ! (capacity))) ; } pub const action_msgs__msg__GoalStatus__STATUS_UNKNOWN : _bindgen_ty_1 = _bindgen_ty_1 :: action_msgs__msg__GoalStatus__STATUS_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_1 { action_msgs__msg__GoalStatus__STATUS_UNKNOWN = 0 , } pub const action_msgs__msg__GoalStatus__STATUS_ACCEPTED : _bindgen_ty_2 = _bindgen_ty_2 :: action_msgs__msg__GoalStatus__STATUS_ACCEPTED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_2 { action_msgs__msg__GoalStatus__STATUS_ACCEPTED = 1 , } pub const action_msgs__msg__GoalStatus__STATUS_EXECUTING : _bindgen_ty_3 = _bindgen_ty_3 :: action_msgs__msg__GoalStatus__STATUS_EXECUTING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_3 { action_msgs__msg__GoalStatus__STATUS_EXECUTING = 2 , } pub const action_msgs__msg__GoalStatus__STATUS_CANCELING : _bindgen_ty_4 = _bindgen_ty_4 :: action_msgs__msg__GoalStatus__STATUS_CANCELING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_4 { action_msgs__msg__GoalStatus__STATUS_CANCELING = 3 , } pub const action_msgs__msg__GoalStatus__STATUS_SUCCEEDED : _bindgen_ty_5 = _bindgen_ty_5 :: action_msgs__msg__GoalStatus__STATUS_SUCCEEDED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_5 { action_msgs__msg__GoalStatus__STATUS_SUCCEEDED = 4 , } pub const action_msgs__msg__GoalStatus__STATUS_CANCELED : _bindgen_ty_6 = _bindgen_ty_6 :: action_msgs__msg__GoalStatus__STATUS_CANCELED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_6 { action_msgs__msg__GoalStatus__STATUS_CANCELED = 5 , } pub const action_msgs__msg__GoalStatus__STATUS_ABORTED : _bindgen_ty_7 = _bindgen_ty_7 :: action_msgs__msg__GoalStatus__STATUS_ABORTED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_7 { action_msgs__msg__GoalStatus__STATUS_ABORTED = 6 , } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalStatus { pub goal_info : action_msgs__msg__GoalInfo , pub status : i8 , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalStatus () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalStatus > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalStatus > () , 28usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalStatus))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalStatus > () , 4usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalStatus))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_info) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatus) , "::" , stringify ! (goal_info))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatus) , "::" , stringify ! (status))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalStatus__Sequence { pub data : * mut action_msgs__msg__GoalStatus , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalStatus__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalStatus__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalStatus__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalStatus__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalStatus__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalStatus__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatus__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatus__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatus__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalStatusArray { pub status_list : action_msgs__msg__GoalStatus__Sequence , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalStatusArray () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalStatusArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalStatusArray > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalStatusArray))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalStatusArray > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalStatusArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status_list) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatusArray) , "::" , stringify ! (status_list))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__msg__GoalStatusArray__Sequence { pub data : * mut action_msgs__msg__GoalStatusArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_action_msgs__msg__GoalStatusArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__msg__GoalStatusArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__msg__GoalStatusArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__msg__GoalStatusArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__msg__GoalStatusArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__msg__GoalStatusArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatusArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatusArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__msg__GoalStatusArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__srv__CancelGoal_Request { pub goal_info : action_msgs__msg__GoalInfo , } # [test] fn bindgen_test_layout_action_msgs__srv__CancelGoal_Request () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__srv__CancelGoal_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__srv__CancelGoal_Request > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__srv__CancelGoal_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__srv__CancelGoal_Request > () , 4usize , concat ! ("Alignment of " , stringify ! (action_msgs__srv__CancelGoal_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_info) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Request) , "::" , stringify ! (goal_info))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__srv__CancelGoal_Request__Sequence { pub data : * mut action_msgs__srv__CancelGoal_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_action_msgs__srv__CancelGoal_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__srv__CancelGoal_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__srv__CancelGoal_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__srv__CancelGoal_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__srv__CancelGoal_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__srv__CancelGoal_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Request__Sequence) , "::" , stringify ! (capacity))) ; } pub const action_msgs__srv__CancelGoal_Response__ERROR_NONE : _bindgen_ty_8 = _bindgen_ty_8 :: action_msgs__srv__CancelGoal_Response__ERROR_NONE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_8 { action_msgs__srv__CancelGoal_Response__ERROR_NONE = 0 , } pub const action_msgs__srv__CancelGoal_Response__ERROR_REJECTED : _bindgen_ty_9 = _bindgen_ty_9 :: action_msgs__srv__CancelGoal_Response__ERROR_REJECTED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_9 { action_msgs__srv__CancelGoal_Response__ERROR_REJECTED = 1 , } pub const action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID : _bindgen_ty_10 = _bindgen_ty_10 :: action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_10 { action_msgs__srv__CancelGoal_Response__ERROR_UNKNOWN_GOAL_ID = 2 , } pub const action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED : _bindgen_ty_11 = _bindgen_ty_11 :: action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_11 { action_msgs__srv__CancelGoal_Response__ERROR_GOAL_TERMINATED = 3 , } # [repr (C)] # [derive (Debug)] pub struct action_msgs__srv__CancelGoal_Response { pub return_code : i8 , pub goals_canceling : action_msgs__msg__GoalInfo__Sequence , } # [test] fn bindgen_test_layout_action_msgs__srv__CancelGoal_Response () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__srv__CancelGoal_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__srv__CancelGoal_Response > () , 32usize , concat ! ("Size of: " , stringify ! (action_msgs__srv__CancelGoal_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__srv__CancelGoal_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__srv__CancelGoal_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . return_code) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Response) , "::" , stringify ! (return_code))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goals_canceling) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Response) , "::" , stringify ! (goals_canceling))) ; } # [repr (C)] # [derive (Debug)] pub struct action_msgs__srv__CancelGoal_Response__Sequence { pub data : * mut action_msgs__srv__CancelGoal_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_action_msgs__srv__CancelGoal_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < action_msgs__srv__CancelGoal_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< action_msgs__srv__CancelGoal_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (action_msgs__srv__CancelGoal_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< action_msgs__srv__CancelGoal_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (action_msgs__srv__CancelGoal_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (action_msgs__srv__CancelGoal_Response__Sequence) , "::" , stringify ! (capacity))) ; } pub type rosidl_service_typesupport_handle_function = :: std :: option :: Option < unsafe extern "C" fn (arg1 : * const rosidl_service_type_support_t , arg2 : * const :: std :: os :: raw :: c_char ,) -> * const rosidl_service_type_support_t , > ; # [repr (C)] # [derive (Debug)] pub struct builtin_interfaces__msg__Duration { pub sec : i32 , pub nanosec : u32 , } # [test] fn bindgen_test_layout_builtin_interfaces__msg__Duration () { const UNINIT : :: std :: mem :: MaybeUninit < builtin_interfaces__msg__Duration > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< builtin_interfaces__msg__Duration > () , 8usize , concat ! ("Size of: " , stringify ! (builtin_interfaces__msg__Duration))) ; assert_eq ! (:: std :: mem :: align_of ::< builtin_interfaces__msg__Duration > () , 4usize , concat ! ("Alignment of " , stringify ! (builtin_interfaces__msg__Duration))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . sec) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Duration) , "::" , stringify ! (sec))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nanosec) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Duration) , "::" , stringify ! (nanosec))) ; } # [repr (C)] # [derive (Debug)] pub struct builtin_interfaces__msg__Duration__Sequence { pub data : * mut builtin_interfaces__msg__Duration , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_builtin_interfaces__msg__Duration__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < builtin_interfaces__msg__Duration__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< builtin_interfaces__msg__Duration__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (builtin_interfaces__msg__Duration__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< builtin_interfaces__msg__Duration__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (builtin_interfaces__msg__Duration__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Duration__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Duration__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (builtin_interfaces__msg__Duration__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Header { pub stamp : builtin_interfaces__msg__Time , pub frame_id : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_std_msgs__msg__Header () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Header > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Header > () , 32usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Header))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Header > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Header) , "::" , stringify ! (stamp))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . frame_id) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Header) , "::" , stringify ! (frame_id))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Header__Sequence { pub data : * mut std_msgs__msg__Header , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Header__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Header__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Header__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Header__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Header__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Header__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Header__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Header__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Header__Sequence) , "::" , stringify ! (capacity))) ; } pub const diagnostic_msgs__msg__DiagnosticStatus__OK : _bindgen_ty_12 = _bindgen_ty_12 :: diagnostic_msgs__msg__DiagnosticStatus__OK ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_12 { diagnostic_msgs__msg__DiagnosticStatus__OK = 0 , } pub const diagnostic_msgs__msg__DiagnosticStatus__WARN : _bindgen_ty_13 = _bindgen_ty_13 :: diagnostic_msgs__msg__DiagnosticStatus__WARN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_13 { diagnostic_msgs__msg__DiagnosticStatus__WARN = 1 , } pub const diagnostic_msgs__msg__DiagnosticStatus__ERROR : _bindgen_ty_14 = _bindgen_ty_14 :: diagnostic_msgs__msg__DiagnosticStatus__ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_14 { diagnostic_msgs__msg__DiagnosticStatus__ERROR = 2 , } pub const diagnostic_msgs__msg__DiagnosticStatus__STALE : _bindgen_ty_15 = _bindgen_ty_15 :: diagnostic_msgs__msg__DiagnosticStatus__STALE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_15 { diagnostic_msgs__msg__DiagnosticStatus__STALE = 3 , } # [repr (C)] pub struct diagnostic_msgs__msg__KeyValue { pub key : rosidl_runtime_c__String , pub value : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__KeyValue () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__KeyValue > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__KeyValue > () , 48usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__KeyValue))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__KeyValue > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__KeyValue))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . key) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__KeyValue) , "::" , stringify ! (key))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__KeyValue) , "::" , stringify ! (value))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__msg__KeyValue__Sequence { pub data : * mut diagnostic_msgs__msg__KeyValue , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__KeyValue__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__KeyValue__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__KeyValue__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__KeyValue__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__KeyValue__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__KeyValue__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__KeyValue__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__KeyValue__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__KeyValue__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct diagnostic_msgs__msg__DiagnosticStatus { pub level : u8 , pub name : rosidl_runtime_c__String , pub message : rosidl_runtime_c__String , pub hardware_id : rosidl_runtime_c__String , pub values : diagnostic_msgs__msg__KeyValue__Sequence , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticStatus () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__DiagnosticStatus > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__DiagnosticStatus > () , 104usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__DiagnosticStatus > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . level) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus) , "::" , stringify ! (level))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . message) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus) , "::" , stringify ! (message))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . hardware_id) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus) , "::" , stringify ! (hardware_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . values) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus) , "::" , stringify ! (values))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__msg__DiagnosticStatus__Sequence { pub data : * mut diagnostic_msgs__msg__DiagnosticStatus , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticStatus__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__DiagnosticStatus__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__DiagnosticStatus__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__DiagnosticStatus__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticStatus__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct diagnostic_msgs__msg__DiagnosticArray { pub header : std_msgs__msg__Header , pub status : diagnostic_msgs__msg__DiagnosticStatus__Sequence , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticArray () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__DiagnosticArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__DiagnosticArray > () , 56usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__DiagnosticArray > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__DiagnosticArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray) , "::" , stringify ! (status))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__msg__DiagnosticArray__Sequence { pub data : * mut diagnostic_msgs__msg__DiagnosticArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__msg__DiagnosticArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__msg__DiagnosticArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__msg__DiagnosticArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__msg__DiagnosticArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__msg__DiagnosticArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__msg__DiagnosticArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct diagnostic_msgs__srv__AddDiagnostics_Request { pub load_namespace : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Request () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__AddDiagnostics_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__AddDiagnostics_Request > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__AddDiagnostics_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . load_namespace) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request) , "::" , stringify ! (load_namespace))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__srv__AddDiagnostics_Request__Sequence { pub data : * mut diagnostic_msgs__srv__AddDiagnostics_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__AddDiagnostics_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__AddDiagnostics_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__AddDiagnostics_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct diagnostic_msgs__srv__AddDiagnostics_Response { pub success : bool , pub message : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Response () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__AddDiagnostics_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__AddDiagnostics_Response > () , 32usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__AddDiagnostics_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . success) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response) , "::" , stringify ! (success))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . message) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response) , "::" , stringify ! (message))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__srv__AddDiagnostics_Response__Sequence { pub data : * mut diagnostic_msgs__srv__AddDiagnostics_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__AddDiagnostics_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__AddDiagnostics_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__AddDiagnostics_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__AddDiagnostics_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__AddDiagnostics_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__srv__SelfTest_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Request () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__SelfTest_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__SelfTest_Request > () , 1usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__SelfTest_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__SelfTest_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__srv__SelfTest_Request__Sequence { pub data : * mut diagnostic_msgs__srv__SelfTest_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__SelfTest_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__SelfTest_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__SelfTest_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__SelfTest_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct diagnostic_msgs__srv__SelfTest_Response { pub id : rosidl_runtime_c__String , pub passed : u8 , pub status : diagnostic_msgs__msg__DiagnosticStatus__Sequence , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Response () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__SelfTest_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__SelfTest_Response > () , 56usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__SelfTest_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__SelfTest_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . passed) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response) , "::" , stringify ! (passed))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response) , "::" , stringify ! (status))) ; } # [repr (C)] # [derive (Debug)] pub struct diagnostic_msgs__srv__SelfTest_Response__Sequence { pub data : * mut diagnostic_msgs__srv__SelfTest_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_diagnostic_msgs__srv__SelfTest_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < diagnostic_msgs__srv__SelfTest_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< diagnostic_msgs__srv__SelfTest_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< diagnostic_msgs__srv__SelfTest_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (diagnostic_msgs__srv__SelfTest_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (diagnostic_msgs__srv__SelfTest_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Vector3 { pub x : f64 , pub y : f64 , pub z : f64 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Vector3 () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Vector3 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Vector3 > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Vector3))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Vector3 > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Vector3))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3) , "::" , stringify ! (x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3) , "::" , stringify ! (y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . z) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3) , "::" , stringify ! (z))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Vector3__Sequence { pub data : * mut geometry_msgs__msg__Vector3 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Vector3__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Vector3__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Vector3__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Vector3__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Vector3__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Vector3__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Accel { pub linear : geometry_msgs__msg__Vector3 , pub angular : geometry_msgs__msg__Vector3 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Accel () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Accel > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Accel > () , 48usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Accel))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Accel > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Accel))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . linear) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Accel) , "::" , stringify ! (linear))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angular) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Accel) , "::" , stringify ! (angular))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Accel__Sequence { pub data : * mut geometry_msgs__msg__Accel , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Accel__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Accel__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Accel__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Accel__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Accel__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Accel__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Accel__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Accel__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Accel__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__AccelStamped { pub header : std_msgs__msg__Header , pub accel : geometry_msgs__msg__Accel , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelStamped > () , 80usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accel) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelStamped) , "::" , stringify ! (accel))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__AccelStamped__Sequence { pub data : * mut geometry_msgs__msg__AccelStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__AccelWithCovariance { pub accel : geometry_msgs__msg__Accel , pub covariance : [f64 ; 36usize] , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovariance () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelWithCovariance > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelWithCovariance > () , 336usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelWithCovariance))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelWithCovariance > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelWithCovariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accel) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovariance) , "::" , stringify ! (accel))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . covariance) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovariance) , "::" , stringify ! (covariance))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__AccelWithCovariance__Sequence { pub data : * mut geometry_msgs__msg__AccelWithCovariance , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovariance__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelWithCovariance__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelWithCovariance__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelWithCovariance__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelWithCovariance__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelWithCovariance__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovariance__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovariance__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovariance__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__AccelWithCovarianceStamped { pub header : std_msgs__msg__Header , pub accel : geometry_msgs__msg__AccelWithCovariance , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovarianceStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelWithCovarianceStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelWithCovarianceStamped > () , 368usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelWithCovarianceStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accel) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped) , "::" , stringify ! (accel))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__AccelWithCovarianceStamped__Sequence { pub data : * mut geometry_msgs__msg__AccelWithCovarianceStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__AccelWithCovarianceStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__AccelWithCovarianceStamped__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__AccelWithCovarianceStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__AccelWithCovarianceStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__AccelWithCovarianceStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Inertia { pub m : f64 , pub com : geometry_msgs__msg__Vector3 , pub ixx : f64 , pub ixy : f64 , pub ixz : f64 , pub iyy : f64 , pub iyz : f64 , pub izz : f64 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Inertia () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Inertia > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Inertia > () , 80usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Inertia))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Inertia > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Inertia))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . m) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (m))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . com) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (com))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ixx) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (ixx))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ixy) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (ixy))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ixz) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (ixz))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . iyy) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (iyy))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . iyz) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (iyz))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . izz) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia) , "::" , stringify ! (izz))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Inertia__Sequence { pub data : * mut geometry_msgs__msg__Inertia , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Inertia__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Inertia__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Inertia__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Inertia__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Inertia__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Inertia__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Inertia__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__InertiaStamped { pub header : std_msgs__msg__Header , pub inertia : geometry_msgs__msg__Inertia , } # [test] fn bindgen_test_layout_geometry_msgs__msg__InertiaStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__InertiaStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__InertiaStamped > () , 112usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__InertiaStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__InertiaStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__InertiaStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__InertiaStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . inertia) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__InertiaStamped) , "::" , stringify ! (inertia))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__InertiaStamped__Sequence { pub data : * mut geometry_msgs__msg__InertiaStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__InertiaStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__InertiaStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__InertiaStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__InertiaStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__InertiaStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__InertiaStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__InertiaStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__InertiaStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__InertiaStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Point { pub x : f64 , pub y : f64 , pub z : f64 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Point () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Point > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Point > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Point))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Point > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Point))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point) , "::" , stringify ! (x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point) , "::" , stringify ! (y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . z) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point) , "::" , stringify ! (z))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Point__Sequence { pub data : * mut geometry_msgs__msg__Point , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Point__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Point__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Point__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Point__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Point__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Point__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Point32 { pub x : f32 , pub y : f32 , pub z : f32 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Point32 () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Point32 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Point32 > () , 12usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Point32))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Point32 > () , 4usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Point32))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32) , "::" , stringify ! (x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32) , "::" , stringify ! (y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . z) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32) , "::" , stringify ! (z))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Point32__Sequence { pub data : * mut geometry_msgs__msg__Point32 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Point32__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Point32__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Point32__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Point32__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Point32__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Point32__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Point32__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__PointStamped { pub header : std_msgs__msg__Header , pub point : geometry_msgs__msg__Point , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PointStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PointStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PointStamped > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PointStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PointStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PointStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PointStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . point) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PointStamped) , "::" , stringify ! (point))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PointStamped__Sequence { pub data : * mut geometry_msgs__msg__PointStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PointStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PointStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PointStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PointStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PointStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PointStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PointStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PointStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PointStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Polygon { pub points : geometry_msgs__msg__Point32__Sequence , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Polygon () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Polygon > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Polygon > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Polygon))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Polygon > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Polygon))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Polygon) , "::" , stringify ! (points))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Polygon__Sequence { pub data : * mut geometry_msgs__msg__Polygon , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Polygon__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Polygon__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Polygon__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Polygon__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Polygon__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Polygon__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Polygon__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Polygon__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Polygon__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__PolygonStamped { pub header : std_msgs__msg__Header , pub polygon : geometry_msgs__msg__Polygon , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PolygonStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PolygonStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PolygonStamped > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PolygonStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PolygonStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PolygonStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PolygonStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . polygon) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PolygonStamped) , "::" , stringify ! (polygon))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PolygonStamped__Sequence { pub data : * mut geometry_msgs__msg__PolygonStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PolygonStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PolygonStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PolygonStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PolygonStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PolygonStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PolygonStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PolygonStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PolygonStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PolygonStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Quaternion { pub x : f64 , pub y : f64 , pub z : f64 , pub w : f64 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Quaternion () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Quaternion > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Quaternion > () , 32usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Quaternion))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Quaternion > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Quaternion))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion) , "::" , stringify ! (x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion) , "::" , stringify ! (y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . z) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion) , "::" , stringify ! (z))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . w) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion) , "::" , stringify ! (w))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Quaternion__Sequence { pub data : * mut geometry_msgs__msg__Quaternion , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Quaternion__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Quaternion__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Quaternion__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Quaternion__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Quaternion__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Quaternion__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Quaternion__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Pose { pub position : geometry_msgs__msg__Point , pub orientation : geometry_msgs__msg__Quaternion , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Pose () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Pose > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Pose > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Pose))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Pose > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . position) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose) , "::" , stringify ! (position))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . orientation) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose) , "::" , stringify ! (orientation))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Pose__Sequence { pub data : * mut geometry_msgs__msg__Pose , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Pose__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Pose__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Pose__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Pose__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Pose__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Pose__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Pose2D { pub x : f64 , pub y : f64 , pub theta : f64 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Pose2D () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Pose2D > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Pose2D > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Pose2D))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Pose2D > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Pose2D))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D) , "::" , stringify ! (x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D) , "::" , stringify ! (y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . theta) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D) , "::" , stringify ! (theta))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Pose2D__Sequence { pub data : * mut geometry_msgs__msg__Pose2D , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Pose2D__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Pose2D__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Pose2D__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Pose2D__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Pose2D__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Pose2D__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Pose2D__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__PoseArray { pub header : std_msgs__msg__Header , pub poses : geometry_msgs__msg__Pose__Sequence , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseArray () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseArray > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseArray))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseArray > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseArray) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . poses) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseArray) , "::" , stringify ! (poses))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PoseArray__Sequence { pub data : * mut geometry_msgs__msg__PoseArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__PoseStamped { pub header : std_msgs__msg__Header , pub pose : geometry_msgs__msg__Pose , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseStamped > () , 88usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseStamped) , "::" , stringify ! (pose))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PoseStamped__Sequence { pub data : * mut geometry_msgs__msg__PoseStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PoseWithCovariance { pub pose : geometry_msgs__msg__Pose , pub covariance : [f64 ; 36usize] , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovariance () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseWithCovariance > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseWithCovariance > () , 344usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseWithCovariance))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseWithCovariance > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseWithCovariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovariance) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . covariance) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovariance) , "::" , stringify ! (covariance))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PoseWithCovariance__Sequence { pub data : * mut geometry_msgs__msg__PoseWithCovariance , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovariance__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseWithCovariance__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseWithCovariance__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseWithCovariance__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseWithCovariance__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseWithCovariance__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovariance__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovariance__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovariance__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__PoseWithCovarianceStamped { pub header : std_msgs__msg__Header , pub pose : geometry_msgs__msg__PoseWithCovariance , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovarianceStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseWithCovarianceStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseWithCovarianceStamped > () , 376usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseWithCovarianceStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped) , "::" , stringify ! (pose))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__PoseWithCovarianceStamped__Sequence { pub data : * mut geometry_msgs__msg__PoseWithCovarianceStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__PoseWithCovarianceStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__PoseWithCovarianceStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__PoseWithCovarianceStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__PoseWithCovarianceStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__PoseWithCovarianceStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__QuaternionStamped { pub header : std_msgs__msg__Header , pub quaternion : geometry_msgs__msg__Quaternion , } # [test] fn bindgen_test_layout_geometry_msgs__msg__QuaternionStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__QuaternionStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__QuaternionStamped > () , 64usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__QuaternionStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__QuaternionStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__QuaternionStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__QuaternionStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . quaternion) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__QuaternionStamped) , "::" , stringify ! (quaternion))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__QuaternionStamped__Sequence { pub data : * mut geometry_msgs__msg__QuaternionStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__QuaternionStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__QuaternionStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__QuaternionStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__QuaternionStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__QuaternionStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__QuaternionStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__QuaternionStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__QuaternionStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__QuaternionStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Transform { pub translation : geometry_msgs__msg__Vector3 , pub rotation : geometry_msgs__msg__Quaternion , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Transform () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Transform > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Transform > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Transform))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Transform > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Transform))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . translation) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Transform) , "::" , stringify ! (translation))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . rotation) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Transform) , "::" , stringify ! (rotation))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Transform__Sequence { pub data : * mut geometry_msgs__msg__Transform , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Transform__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Transform__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Transform__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Transform__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Transform__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Transform__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Transform__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Transform__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Transform__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__TransformStamped { pub header : std_msgs__msg__Header , pub child_frame_id : rosidl_runtime_c__String , pub transform : geometry_msgs__msg__Transform , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TransformStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TransformStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TransformStamped > () , 112usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TransformStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TransformStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TransformStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . child_frame_id) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped) , "::" , stringify ! (child_frame_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transform) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped) , "::" , stringify ! (transform))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__TransformStamped__Sequence { pub data : * mut geometry_msgs__msg__TransformStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TransformStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TransformStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TransformStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TransformStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TransformStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TransformStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TransformStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Twist { pub linear : geometry_msgs__msg__Vector3 , pub angular : geometry_msgs__msg__Vector3 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Twist () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Twist > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Twist > () , 48usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Twist))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Twist > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Twist))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . linear) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Twist) , "::" , stringify ! (linear))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angular) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Twist) , "::" , stringify ! (angular))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Twist__Sequence { pub data : * mut geometry_msgs__msg__Twist , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Twist__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Twist__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Twist__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Twist__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Twist__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Twist__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Twist__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Twist__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Twist__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__TwistStamped { pub header : std_msgs__msg__Header , pub twist : geometry_msgs__msg__Twist , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistStamped > () , 80usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . twist) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistStamped) , "::" , stringify ! (twist))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__TwistStamped__Sequence { pub data : * mut geometry_msgs__msg__TwistStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__TwistWithCovariance { pub twist : geometry_msgs__msg__Twist , pub covariance : [f64 ; 36usize] , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovariance () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistWithCovariance > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistWithCovariance > () , 336usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistWithCovariance))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistWithCovariance > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistWithCovariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . twist) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovariance) , "::" , stringify ! (twist))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . covariance) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovariance) , "::" , stringify ! (covariance))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__TwistWithCovariance__Sequence { pub data : * mut geometry_msgs__msg__TwistWithCovariance , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovariance__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistWithCovariance__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistWithCovariance__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistWithCovariance__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistWithCovariance__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistWithCovariance__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovariance__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovariance__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovariance__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__TwistWithCovarianceStamped { pub header : std_msgs__msg__Header , pub twist : geometry_msgs__msg__TwistWithCovariance , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovarianceStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistWithCovarianceStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistWithCovarianceStamped > () , 368usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistWithCovarianceStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . twist) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped) , "::" , stringify ! (twist))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__TwistWithCovarianceStamped__Sequence { pub data : * mut geometry_msgs__msg__TwistWithCovarianceStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__TwistWithCovarianceStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__TwistWithCovarianceStamped__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__TwistWithCovarianceStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__TwistWithCovarianceStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__TwistWithCovarianceStamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__Vector3Stamped { pub header : std_msgs__msg__Header , pub vector : geometry_msgs__msg__Vector3 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Vector3Stamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Vector3Stamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Vector3Stamped > () , 56usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Vector3Stamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Vector3Stamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Vector3Stamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3Stamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . vector) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3Stamped) , "::" , stringify ! (vector))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Vector3Stamped__Sequence { pub data : * mut geometry_msgs__msg__Vector3Stamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Vector3Stamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Vector3Stamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Vector3Stamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Vector3Stamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Vector3Stamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Vector3Stamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3Stamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3Stamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Vector3Stamped__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Wrench { pub force : geometry_msgs__msg__Vector3 , pub torque : geometry_msgs__msg__Vector3 , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Wrench () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Wrench > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Wrench > () , 48usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Wrench))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Wrench > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Wrench))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . force) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Wrench) , "::" , stringify ! (force))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . torque) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Wrench) , "::" , stringify ! (torque))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__Wrench__Sequence { pub data : * mut geometry_msgs__msg__Wrench , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__Wrench__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__Wrench__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__Wrench__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__Wrench__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__Wrench__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__Wrench__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Wrench__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Wrench__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__Wrench__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct geometry_msgs__msg__WrenchStamped { pub header : std_msgs__msg__Header , pub wrench : geometry_msgs__msg__Wrench , } # [test] fn bindgen_test_layout_geometry_msgs__msg__WrenchStamped () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__WrenchStamped > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__WrenchStamped > () , 80usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__WrenchStamped))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__WrenchStamped > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__WrenchStamped))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__WrenchStamped) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wrench) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__WrenchStamped) , "::" , stringify ! (wrench))) ; } # [repr (C)] # [derive (Debug)] pub struct geometry_msgs__msg__WrenchStamped__Sequence { pub data : * mut geometry_msgs__msg__WrenchStamped , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_geometry_msgs__msg__WrenchStamped__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < geometry_msgs__msg__WrenchStamped__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< geometry_msgs__msg__WrenchStamped__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (geometry_msgs__msg__WrenchStamped__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< geometry_msgs__msg__WrenchStamped__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (geometry_msgs__msg__WrenchStamped__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__WrenchStamped__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__WrenchStamped__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (geometry_msgs__msg__WrenchStamped__Sequence) , "::" , stringify ! (capacity))) ; } pub const lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN : _bindgen_ty_16 = _bindgen_ty_16 :: lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_16 { lifecycle_msgs__msg__State__PRIMARY_STATE_UNKNOWN = 0 , } pub const lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED : _bindgen_ty_17 = _bindgen_ty_17 :: lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_17 { lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED = 1 , } pub const lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE : _bindgen_ty_18 = _bindgen_ty_18 :: lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_18 { lifecycle_msgs__msg__State__PRIMARY_STATE_INACTIVE = 2 , } pub const lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE : _bindgen_ty_19 = _bindgen_ty_19 :: lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_19 { lifecycle_msgs__msg__State__PRIMARY_STATE_ACTIVE = 3 , } pub const lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED : _bindgen_ty_20 = _bindgen_ty_20 :: lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_20 { lifecycle_msgs__msg__State__PRIMARY_STATE_FINALIZED = 4 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING : _bindgen_ty_21 = _bindgen_ty_21 :: lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_21 { lifecycle_msgs__msg__State__TRANSITION_STATE_CONFIGURING = 10 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP : _bindgen_ty_22 = _bindgen_ty_22 :: lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_22 { lifecycle_msgs__msg__State__TRANSITION_STATE_CLEANINGUP = 11 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN : _bindgen_ty_23 = _bindgen_ty_23 :: lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_23 { lifecycle_msgs__msg__State__TRANSITION_STATE_SHUTTINGDOWN = 12 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING : _bindgen_ty_24 = _bindgen_ty_24 :: lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_24 { lifecycle_msgs__msg__State__TRANSITION_STATE_ACTIVATING = 13 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING : _bindgen_ty_25 = _bindgen_ty_25 :: lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_25 { lifecycle_msgs__msg__State__TRANSITION_STATE_DEACTIVATING = 14 , } pub const lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING : _bindgen_ty_26 = _bindgen_ty_26 :: lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_26 { lifecycle_msgs__msg__State__TRANSITION_STATE_ERRORPROCESSING = 15 , } # [repr (C)] pub struct lifecycle_msgs__msg__State { pub id : u8 , pub label : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__State () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__State > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__State > () , 32usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__State))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__State > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__State))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__State) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . label) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__State) , "::" , stringify ! (label))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__msg__State__Sequence { pub data : * mut lifecycle_msgs__msg__State , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__State__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__State__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__State__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__State__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__State__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__State__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__State__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__State__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__State__Sequence) , "::" , stringify ! (capacity))) ; } pub const lifecycle_msgs__msg__Transition__TRANSITION_CREATE : _bindgen_ty_27 = _bindgen_ty_27 :: lifecycle_msgs__msg__Transition__TRANSITION_CREATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_27 { lifecycle_msgs__msg__Transition__TRANSITION_CREATE = 0 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE : _bindgen_ty_28 = _bindgen_ty_28 :: lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_28 { lifecycle_msgs__msg__Transition__TRANSITION_CONFIGURE = 1 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP : _bindgen_ty_29 = _bindgen_ty_29 :: lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_29 { lifecycle_msgs__msg__Transition__TRANSITION_CLEANUP = 2 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE : _bindgen_ty_30 = _bindgen_ty_30 :: lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_30 { lifecycle_msgs__msg__Transition__TRANSITION_ACTIVATE = 3 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE : _bindgen_ty_31 = _bindgen_ty_31 :: lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_31 { lifecycle_msgs__msg__Transition__TRANSITION_DEACTIVATE = 4 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN : _bindgen_ty_32 = _bindgen_ty_32 :: lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_32 { lifecycle_msgs__msg__Transition__TRANSITION_UNCONFIGURED_SHUTDOWN = 5 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN : _bindgen_ty_33 = _bindgen_ty_33 :: lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_33 { lifecycle_msgs__msg__Transition__TRANSITION_INACTIVE_SHUTDOWN = 6 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN : _bindgen_ty_34 = _bindgen_ty_34 :: lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_34 { lifecycle_msgs__msg__Transition__TRANSITION_ACTIVE_SHUTDOWN = 7 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_DESTROY : _bindgen_ty_35 = _bindgen_ty_35 :: lifecycle_msgs__msg__Transition__TRANSITION_DESTROY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_35 { lifecycle_msgs__msg__Transition__TRANSITION_DESTROY = 8 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS : _bindgen_ty_36 = _bindgen_ty_36 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_36 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_SUCCESS = 10 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE : _bindgen_ty_37 = _bindgen_ty_37 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_37 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_FAILURE = 11 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR : _bindgen_ty_38 = _bindgen_ty_38 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_38 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CONFIGURE_ERROR = 12 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS : _bindgen_ty_39 = _bindgen_ty_39 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_39 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_SUCCESS = 20 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE : _bindgen_ty_40 = _bindgen_ty_40 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_40 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_FAILURE = 21 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR : _bindgen_ty_41 = _bindgen_ty_41 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_41 { lifecycle_msgs__msg__Transition__TRANSITION_ON_CLEANUP_ERROR = 22 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS : _bindgen_ty_42 = _bindgen_ty_42 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_42 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_SUCCESS = 30 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE : _bindgen_ty_43 = _bindgen_ty_43 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_43 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_FAILURE = 31 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR : _bindgen_ty_44 = _bindgen_ty_44 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_44 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ACTIVATE_ERROR = 32 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS : _bindgen_ty_45 = _bindgen_ty_45 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_45 { lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_SUCCESS = 40 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE : _bindgen_ty_46 = _bindgen_ty_46 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_46 { lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_FAILURE = 41 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR : _bindgen_ty_47 = _bindgen_ty_47 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_47 { lifecycle_msgs__msg__Transition__TRANSITION_ON_DEACTIVATE_ERROR = 42 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS : _bindgen_ty_48 = _bindgen_ty_48 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_48 { lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_SUCCESS = 50 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE : _bindgen_ty_49 = _bindgen_ty_49 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_49 { lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_FAILURE = 51 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR : _bindgen_ty_50 = _bindgen_ty_50 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_50 { lifecycle_msgs__msg__Transition__TRANSITION_ON_SHUTDOWN_ERROR = 52 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS : _bindgen_ty_51 = _bindgen_ty_51 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_51 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_SUCCESS = 60 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE : _bindgen_ty_52 = _bindgen_ty_52 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_52 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_FAILURE = 61 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR : _bindgen_ty_53 = _bindgen_ty_53 :: lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_53 { lifecycle_msgs__msg__Transition__TRANSITION_ON_ERROR_ERROR = 62 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS : _bindgen_ty_54 = _bindgen_ty_54 :: lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_54 { lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_SUCCESS = 97 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE : _bindgen_ty_55 = _bindgen_ty_55 :: lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_55 { lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_FAILURE = 98 , } pub const lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR : _bindgen_ty_56 = _bindgen_ty_56 :: lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_56 { lifecycle_msgs__msg__Transition__TRANSITION_CALLBACK_ERROR = 99 , } # [repr (C)] pub struct lifecycle_msgs__msg__Transition { pub id : u8 , pub label : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__Transition () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__Transition > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__Transition > () , 32usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__Transition))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__Transition > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__Transition))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__Transition) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . label) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__Transition) , "::" , stringify ! (label))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__msg__Transition__Sequence { pub data : * mut lifecycle_msgs__msg__Transition , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__Transition__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__Transition__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__Transition__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__Transition__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__Transition__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__Transition__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__Transition__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__Transition__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__Transition__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct lifecycle_msgs__msg__TransitionDescription { pub transition : lifecycle_msgs__msg__Transition , pub start_state : lifecycle_msgs__msg__State , pub goal_state : lifecycle_msgs__msg__State , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__TransitionDescription () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__TransitionDescription > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__TransitionDescription > () , 96usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__TransitionDescription))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__TransitionDescription > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__TransitionDescription))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transition) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription) , "::" , stringify ! (transition))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . start_state) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription) , "::" , stringify ! (start_state))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_state) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription) , "::" , stringify ! (goal_state))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__msg__TransitionDescription__Sequence { pub data : * mut lifecycle_msgs__msg__TransitionDescription , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__TransitionDescription__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__TransitionDescription__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__TransitionDescription__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__TransitionDescription__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__TransitionDescription__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__TransitionDescription__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionDescription__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct lifecycle_msgs__msg__TransitionEvent { pub timestamp : u64 , pub transition : lifecycle_msgs__msg__Transition , pub start_state : lifecycle_msgs__msg__State , pub goal_state : lifecycle_msgs__msg__State , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__TransitionEvent () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__TransitionEvent > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__TransitionEvent > () , 104usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__TransitionEvent))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__TransitionEvent > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__TransitionEvent))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . timestamp) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent) , "::" , stringify ! (timestamp))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transition) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent) , "::" , stringify ! (transition))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . start_state) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent) , "::" , stringify ! (start_state))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_state) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent) , "::" , stringify ! (goal_state))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__msg__TransitionEvent__Sequence { pub data : * mut lifecycle_msgs__msg__TransitionEvent , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__msg__TransitionEvent__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__msg__TransitionEvent__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__msg__TransitionEvent__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__msg__TransitionEvent__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__msg__TransitionEvent__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__msg__TransitionEvent__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__msg__TransitionEvent__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct lifecycle_msgs__srv__ChangeState_Request { pub transition : lifecycle_msgs__msg__Transition , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Request () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__ChangeState_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__ChangeState_Request > () , 32usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__ChangeState_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__ChangeState_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transition) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request) , "::" , stringify ! (transition))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__ChangeState_Request__Sequence { pub data : * mut lifecycle_msgs__srv__ChangeState_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__ChangeState_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__ChangeState_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__ChangeState_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__ChangeState_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__ChangeState_Response { pub success : bool , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Response () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__ChangeState_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__ChangeState_Response > () , 1usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__ChangeState_Response > () , 1usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__ChangeState_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . success) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response) , "::" , stringify ! (success))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__ChangeState_Response__Sequence { pub data : * mut lifecycle_msgs__srv__ChangeState_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__ChangeState_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__ChangeState_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__ChangeState_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__ChangeState_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__ChangeState_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__ChangeState_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableStates_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Request () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableStates_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableStates_Request > () , 1usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableStates_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableStates_Request__Sequence { pub data : * mut lifecycle_msgs__srv__GetAvailableStates_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableStates_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableStates_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableStates_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableStates_Response { pub available_states : lifecycle_msgs__msg__State__Sequence , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Response () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableStates_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableStates_Response > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableStates_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . available_states) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response) , "::" , stringify ! (available_states))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableStates_Response__Sequence { pub data : * mut lifecycle_msgs__srv__GetAvailableStates_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableStates_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableStates_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableStates_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableStates_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableStates_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableTransitions_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Request () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableTransitions_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Request > () , 1usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence { pub data : * mut lifecycle_msgs__srv__GetAvailableTransitions_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableTransitions_Response { pub available_transitions : lifecycle_msgs__msg__TransitionDescription__Sequence , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Response () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableTransitions_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Response > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . available_transitions) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response) , "::" , stringify ! (available_transitions))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence { pub data : * mut lifecycle_msgs__srv__GetAvailableTransitions_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetState_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Request () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetState_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetState_Request > () , 1usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetState_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetState_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetState_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetState_Request__Sequence { pub data : * mut lifecycle_msgs__srv__GetState_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetState_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetState_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetState_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetState_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetState_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct lifecycle_msgs__srv__GetState_Response { pub current_state : lifecycle_msgs__msg__State , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Response () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetState_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetState_Response > () , 32usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetState_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetState_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetState_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . current_state) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Response) , "::" , stringify ! (current_state))) ; } # [repr (C)] # [derive (Debug)] pub struct lifecycle_msgs__srv__GetState_Response__Sequence { pub data : * mut lifecycle_msgs__srv__GetState_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_lifecycle_msgs__srv__GetState_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < lifecycle_msgs__srv__GetState_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< lifecycle_msgs__srv__GetState_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (lifecycle_msgs__srv__GetState_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< lifecycle_msgs__srv__GetState_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (lifecycle_msgs__srv__GetState_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (lifecycle_msgs__srv__GetState_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__msg__GridCells { pub header : std_msgs__msg__Header , pub cell_width : f32 , pub cell_height : f32 , pub cells : geometry_msgs__msg__Point__Sequence , } # [test] fn bindgen_test_layout_nav_msgs__msg__GridCells () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__GridCells > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__GridCells > () , 64usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__GridCells))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__GridCells > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__GridCells))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . cell_width) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells) , "::" , stringify ! (cell_width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . cell_height) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells) , "::" , stringify ! (cell_height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . cells) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells) , "::" , stringify ! (cells))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__GridCells__Sequence { pub data : * mut nav_msgs__msg__GridCells , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__msg__GridCells__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__GridCells__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__GridCells__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__GridCells__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__GridCells__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__GridCells__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__GridCells__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__MapMetaData { pub map_load_time : builtin_interfaces__msg__Time , pub resolution : f32 , pub width : u32 , pub height : u32 , pub origin : geometry_msgs__msg__Pose , } # [test] fn bindgen_test_layout_nav_msgs__msg__MapMetaData () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__MapMetaData > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__MapMetaData > () , 80usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__MapMetaData))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__MapMetaData > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__MapMetaData))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . map_load_time) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData) , "::" , stringify ! (map_load_time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . resolution) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData) , "::" , stringify ! (resolution))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . width) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData) , "::" , stringify ! (width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . height) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData) , "::" , stringify ! (height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . origin) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData) , "::" , stringify ! (origin))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__MapMetaData__Sequence { pub data : * mut nav_msgs__msg__MapMetaData , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__msg__MapMetaData__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__MapMetaData__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__MapMetaData__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__MapMetaData__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__MapMetaData__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__MapMetaData__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__MapMetaData__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__msg__OccupancyGrid { pub header : std_msgs__msg__Header , pub info : nav_msgs__msg__MapMetaData , pub data : rosidl_runtime_c__int8__Sequence , } # [test] fn bindgen_test_layout_nav_msgs__msg__OccupancyGrid () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__OccupancyGrid > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__OccupancyGrid > () , 136usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__OccupancyGrid))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__OccupancyGrid > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__OccupancyGrid))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . info) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid) , "::" , stringify ! (info))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__OccupancyGrid__Sequence { pub data : * mut nav_msgs__msg__OccupancyGrid , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__msg__OccupancyGrid__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__OccupancyGrid__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__OccupancyGrid__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__OccupancyGrid__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__OccupancyGrid__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__OccupancyGrid__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__OccupancyGrid__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__msg__Odometry { pub header : std_msgs__msg__Header , pub child_frame_id : rosidl_runtime_c__String , pub pose : geometry_msgs__msg__PoseWithCovariance , pub twist : geometry_msgs__msg__TwistWithCovariance , } # [test] fn bindgen_test_layout_nav_msgs__msg__Odometry () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__Odometry > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__Odometry > () , 736usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__Odometry))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__Odometry > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__Odometry))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . child_frame_id) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry) , "::" , stringify ! (child_frame_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . twist) as usize - ptr as usize } , 400usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry) , "::" , stringify ! (twist))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__Odometry__Sequence { pub data : * mut nav_msgs__msg__Odometry , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__msg__Odometry__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__Odometry__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__Odometry__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__Odometry__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__Odometry__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__Odometry__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Odometry__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__msg__Path { pub header : std_msgs__msg__Header , pub poses : geometry_msgs__msg__PoseStamped__Sequence , } # [test] fn bindgen_test_layout_nav_msgs__msg__Path () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__Path > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__Path > () , 56usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__Path))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__Path > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__Path))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Path) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . poses) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Path) , "::" , stringify ! (poses))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__msg__Path__Sequence { pub data : * mut nav_msgs__msg__Path , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__msg__Path__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__msg__Path__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__msg__Path__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__msg__Path__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__msg__Path__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__msg__Path__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Path__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Path__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__msg__Path__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__GetMap_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetMap_Request () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetMap_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetMap_Request > () , 1usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetMap_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetMap_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetMap_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__GetMap_Request__Sequence { pub data : * mut nav_msgs__srv__GetMap_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetMap_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetMap_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetMap_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetMap_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetMap_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetMap_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__srv__GetMap_Response { pub map : nav_msgs__msg__OccupancyGrid , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetMap_Response () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetMap_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetMap_Response > () , 136usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetMap_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetMap_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetMap_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . map) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Response) , "::" , stringify ! (map))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__GetMap_Response__Sequence { pub data : * mut nav_msgs__srv__GetMap_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetMap_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetMap_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetMap_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetMap_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetMap_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetMap_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetMap_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__srv__GetPlan_Request { pub start : geometry_msgs__msg__PoseStamped , pub goal : geometry_msgs__msg__PoseStamped , pub tolerance : f32 , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetPlan_Request () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetPlan_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetPlan_Request > () , 184usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetPlan_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetPlan_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetPlan_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . start) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request) , "::" , stringify ! (start))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request) , "::" , stringify ! (goal))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . tolerance) as usize - ptr as usize } , 176usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request) , "::" , stringify ! (tolerance))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__GetPlan_Request__Sequence { pub data : * mut nav_msgs__srv__GetPlan_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetPlan_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetPlan_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetPlan_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetPlan_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetPlan_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetPlan_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__srv__GetPlan_Response { pub plan : nav_msgs__msg__Path , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetPlan_Response () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetPlan_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetPlan_Response > () , 56usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetPlan_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetPlan_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetPlan_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . plan) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Response) , "::" , stringify ! (plan))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__GetPlan_Response__Sequence { pub data : * mut nav_msgs__srv__GetPlan_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__GetPlan_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__GetPlan_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__GetPlan_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__GetPlan_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__GetPlan_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__GetPlan_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__GetPlan_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__srv__LoadMap_Request { pub map_url : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_nav_msgs__srv__LoadMap_Request () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__LoadMap_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__LoadMap_Request > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__LoadMap_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__LoadMap_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__LoadMap_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . map_url) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Request) , "::" , stringify ! (map_url))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__LoadMap_Request__Sequence { pub data : * mut nav_msgs__srv__LoadMap_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__LoadMap_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__LoadMap_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__LoadMap_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__LoadMap_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__LoadMap_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__LoadMap_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Request__Sequence) , "::" , stringify ! (capacity))) ; } pub const nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS : _bindgen_ty_57 = _bindgen_ty_57 :: nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_57 { nav_msgs__srv__LoadMap_Response__RESULT_SUCCESS = 0 , } pub const nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST : _bindgen_ty_58 = _bindgen_ty_58 :: nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_58 { nav_msgs__srv__LoadMap_Response__RESULT_MAP_DOES_NOT_EXIST = 1 , } pub const nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA : _bindgen_ty_59 = _bindgen_ty_59 :: nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_59 { nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_DATA = 2 , } pub const nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA : _bindgen_ty_60 = _bindgen_ty_60 :: nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_60 { nav_msgs__srv__LoadMap_Response__RESULT_INVALID_MAP_METADATA = 3 , } pub const nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE : _bindgen_ty_61 = _bindgen_ty_61 :: nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_61 { nav_msgs__srv__LoadMap_Response__RESULT_UNDEFINED_FAILURE = 255 , } # [repr (C)] pub struct nav_msgs__srv__LoadMap_Response { pub map : nav_msgs__msg__OccupancyGrid , pub result : u8 , } # [test] fn bindgen_test_layout_nav_msgs__srv__LoadMap_Response () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__LoadMap_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__LoadMap_Response > () , 144usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__LoadMap_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__LoadMap_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__LoadMap_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . map) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Response) , "::" , stringify ! (map))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__LoadMap_Response__Sequence { pub data : * mut nav_msgs__srv__LoadMap_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__LoadMap_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__LoadMap_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__LoadMap_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__LoadMap_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__LoadMap_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__LoadMap_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__LoadMap_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct nav_msgs__srv__SetMap_Request { pub map : nav_msgs__msg__OccupancyGrid , pub initial_pose : geometry_msgs__msg__PoseWithCovarianceStamped , } # [test] fn bindgen_test_layout_nav_msgs__srv__SetMap_Request () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__SetMap_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__SetMap_Request > () , 512usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__SetMap_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__SetMap_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__SetMap_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . map) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Request) , "::" , stringify ! (map))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . initial_pose) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Request) , "::" , stringify ! (initial_pose))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__SetMap_Request__Sequence { pub data : * mut nav_msgs__srv__SetMap_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__SetMap_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__SetMap_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__SetMap_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__SetMap_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__SetMap_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__SetMap_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__SetMap_Response { pub success : bool , } # [test] fn bindgen_test_layout_nav_msgs__srv__SetMap_Response () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__SetMap_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__SetMap_Response > () , 1usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__SetMap_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__SetMap_Response > () , 1usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__SetMap_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . success) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Response) , "::" , stringify ! (success))) ; } # [repr (C)] # [derive (Debug)] pub struct nav_msgs__srv__SetMap_Response__Sequence { pub data : * mut nav_msgs__srv__SetMap_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_nav_msgs__srv__SetMap_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < nav_msgs__srv__SetMap_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< nav_msgs__srv__SetMap_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (nav_msgs__srv__SetMap_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< nav_msgs__srv__SetMap_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (nav_msgs__srv__SetMap_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (nav_msgs__srv__SetMap_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__FloatingPointRange { pub from_value : f64 , pub to_value : f64 , pub step : f64 , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__FloatingPointRange () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__FloatingPointRange > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__FloatingPointRange > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__FloatingPointRange))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__FloatingPointRange > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__FloatingPointRange))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . from_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange) , "::" , stringify ! (from_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . to_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange) , "::" , stringify ! (to_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . step) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange) , "::" , stringify ! (step))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__FloatingPointRange__Sequence { pub data : * mut rcl_interfaces__msg__FloatingPointRange , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__FloatingPointRange__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__FloatingPointRange__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__FloatingPointRange__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__FloatingPointRange__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__FloatingPointRange__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__FloatingPointRange__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__FloatingPointRange__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__IntegerRange { pub from_value : i64 , pub to_value : i64 , pub step : u64 , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__IntegerRange () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__IntegerRange > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__IntegerRange > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__IntegerRange))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__IntegerRange > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__IntegerRange))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . from_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange) , "::" , stringify ! (from_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . to_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange) , "::" , stringify ! (to_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . step) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange) , "::" , stringify ! (step))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__IntegerRange__Sequence { pub data : * mut rcl_interfaces__msg__IntegerRange , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__IntegerRange__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__IntegerRange__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__IntegerRange__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__IntegerRange__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__IntegerRange__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__IntegerRange__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__IntegerRange__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__msg__ListParametersResult { pub names : rosidl_runtime_c__String__Sequence , pub prefixes : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ListParametersResult () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ListParametersResult > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ListParametersResult > () , 48usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ListParametersResult))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ListParametersResult > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ListParametersResult))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . names) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ListParametersResult) , "::" , stringify ! (names))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . prefixes) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ListParametersResult) , "::" , stringify ! (prefixes))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ListParametersResult__Sequence { pub data : * mut rcl_interfaces__msg__ListParametersResult , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ListParametersResult__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ListParametersResult__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ListParametersResult__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ListParametersResult__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ListParametersResult__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ListParametersResult__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ListParametersResult__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ListParametersResult__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ListParametersResult__Sequence) , "::" , stringify ! (capacity))) ; } pub const rcl_interfaces__msg__Log__DEBUG : _bindgen_ty_62 = _bindgen_ty_62 :: rcl_interfaces__msg__Log__DEBUG ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_62 { rcl_interfaces__msg__Log__DEBUG = 10 , } pub const rcl_interfaces__msg__Log__INFO : _bindgen_ty_63 = _bindgen_ty_63 :: rcl_interfaces__msg__Log__INFO ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_63 { rcl_interfaces__msg__Log__INFO = 20 , } pub const rcl_interfaces__msg__Log__WARN : _bindgen_ty_64 = _bindgen_ty_64 :: rcl_interfaces__msg__Log__WARN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_64 { rcl_interfaces__msg__Log__WARN = 30 , } pub const rcl_interfaces__msg__Log__ERROR : _bindgen_ty_65 = _bindgen_ty_65 :: rcl_interfaces__msg__Log__ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_65 { rcl_interfaces__msg__Log__ERROR = 40 , } pub const rcl_interfaces__msg__Log__FATAL : _bindgen_ty_66 = _bindgen_ty_66 :: rcl_interfaces__msg__Log__FATAL ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_66 { rcl_interfaces__msg__Log__FATAL = 50 , } # [repr (C)] pub struct rcl_interfaces__msg__Log { pub stamp : builtin_interfaces__msg__Time , pub level : u8 , pub name : rosidl_runtime_c__String , pub msg : rosidl_runtime_c__String , pub file : rosidl_runtime_c__String , pub function : rosidl_runtime_c__String , pub line : u32 , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__Log () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__Log > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__Log > () , 120usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__Log))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__Log > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__Log))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (stamp))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . level) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (level))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . msg) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (msg))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . file) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (file))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . function) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (function))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . line) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log) , "::" , stringify ! (line))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__Log__Sequence { pub data : * mut rcl_interfaces__msg__Log , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__Log__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__Log__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__Log__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__Log__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__Log__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__Log__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Log__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__msg__ParameterValue { pub type_ : u8 , pub bool_value : bool , pub integer_value : i64 , pub double_value : f64 , pub string_value : rosidl_runtime_c__String , pub byte_array_value : rosidl_runtime_c__octet__Sequence , pub bool_array_value : rosidl_runtime_c__boolean__Sequence , pub integer_array_value : rosidl_runtime_c__int64__Sequence , pub double_array_value : rosidl_runtime_c__double__Sequence , pub string_array_value : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterValue () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterValue > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterValue > () , 168usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterValue))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterValue > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterValue))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_value) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (bool_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . integer_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (integer_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . double_value) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (double_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (string_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_array_value) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (byte_array_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_array_value) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (bool_array_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . integer_array_value) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (integer_array_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . double_array_value) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (double_array_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_array_value) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue) , "::" , stringify ! (string_array_value))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterValue__Sequence { pub data : * mut rcl_interfaces__msg__ParameterValue , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterValue__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterValue__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterValue__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterValue__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterValue__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterValue__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterValue__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__msg__Parameter { pub name : rosidl_runtime_c__String , pub value : rcl_interfaces__msg__ParameterValue , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__Parameter () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__Parameter > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__Parameter > () , 192usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__Parameter))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__Parameter > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__Parameter))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Parameter) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Parameter) , "::" , stringify ! (value))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__Parameter__Sequence { pub data : * mut rcl_interfaces__msg__Parameter , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__Parameter__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__Parameter__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__Parameter__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__Parameter__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__Parameter__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__Parameter__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Parameter__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Parameter__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__Parameter__Sequence) , "::" , stringify ! (capacity))) ; } pub const rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE : _bindgen_ty_67 = _bindgen_ty_67 :: rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_67 { rcl_interfaces__msg__ParameterDescriptor__floating_point_range__MAX_SIZE = 1 , } pub const rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE : _bindgen_ty_68 = _bindgen_ty_68 :: rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_68 { rcl_interfaces__msg__ParameterDescriptor__integer_range__MAX_SIZE = 1 , } # [repr (C)] pub struct rcl_interfaces__msg__ParameterDescriptor { pub name : rosidl_runtime_c__String , pub type_ : u8 , pub description : rosidl_runtime_c__String , pub additional_constraints : rosidl_runtime_c__String , pub read_only : bool , pub dynamic_typing : bool , pub floating_point_range : rcl_interfaces__msg__FloatingPointRange__Sequence , pub integer_range : rcl_interfaces__msg__IntegerRange__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterDescriptor () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterDescriptor > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterDescriptor > () , 136usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterDescriptor > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterDescriptor))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . description) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (description))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . additional_constraints) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (additional_constraints))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . read_only) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (read_only))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . dynamic_typing) as usize - ptr as usize } , 81usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (dynamic_typing))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . floating_point_range) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (floating_point_range))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . integer_range) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor) , "::" , stringify ! (integer_range))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterDescriptor__Sequence { pub data : * mut rcl_interfaces__msg__ParameterDescriptor , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterDescriptor__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterDescriptor__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterDescriptor__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterDescriptor__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterDescriptor__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterDescriptor__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__msg__ParameterEvent { pub stamp : builtin_interfaces__msg__Time , pub node : rosidl_runtime_c__String , pub new_parameters : rcl_interfaces__msg__Parameter__Sequence , pub changed_parameters : rcl_interfaces__msg__Parameter__Sequence , pub deleted_parameters : rcl_interfaces__msg__Parameter__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterEvent () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterEvent > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterEvent > () , 104usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterEvent))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterEvent > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterEvent))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent) , "::" , stringify ! (stamp))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . node) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent) , "::" , stringify ! (node))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . new_parameters) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent) , "::" , stringify ! (new_parameters))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . changed_parameters) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent) , "::" , stringify ! (changed_parameters))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . deleted_parameters) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent) , "::" , stringify ! (deleted_parameters))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterEvent__Sequence { pub data : * mut rcl_interfaces__msg__ParameterEvent , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterEvent__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterEvent__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterEvent__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterEvent__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterEvent__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterEvent__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEvent__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterEventDescriptors { pub new_parameters : rcl_interfaces__msg__ParameterDescriptor__Sequence , pub changed_parameters : rcl_interfaces__msg__ParameterDescriptor__Sequence , pub deleted_parameters : rcl_interfaces__msg__ParameterDescriptor__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterEventDescriptors () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterEventDescriptors > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterEventDescriptors > () , 72usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterEventDescriptors > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . new_parameters) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors) , "::" , stringify ! (new_parameters))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . changed_parameters) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors) , "::" , stringify ! (changed_parameters))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . deleted_parameters) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors) , "::" , stringify ! (deleted_parameters))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterEventDescriptors__Sequence { pub data : * mut rcl_interfaces__msg__ParameterEventDescriptors , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterEventDescriptors__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterEventDescriptors__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterEventDescriptors__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterEventDescriptors__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterEventDescriptors__Sequence) , "::" , stringify ! (capacity))) ; } pub const rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET : _bindgen_ty_69 = _bindgen_ty_69 :: rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_69 { rcl_interfaces__msg__ParameterType__PARAMETER_NOT_SET = 0 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_BOOL : _bindgen_ty_70 = _bindgen_ty_70 :: rcl_interfaces__msg__ParameterType__PARAMETER_BOOL ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_70 { rcl_interfaces__msg__ParameterType__PARAMETER_BOOL = 1 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER : _bindgen_ty_71 = _bindgen_ty_71 :: rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_71 { rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER = 2 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE : _bindgen_ty_72 = _bindgen_ty_72 :: rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_72 { rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE = 3 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_STRING : _bindgen_ty_73 = _bindgen_ty_73 :: rcl_interfaces__msg__ParameterType__PARAMETER_STRING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_73 { rcl_interfaces__msg__ParameterType__PARAMETER_STRING = 4 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY : _bindgen_ty_74 = _bindgen_ty_74 :: rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_74 { rcl_interfaces__msg__ParameterType__PARAMETER_BYTE_ARRAY = 5 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY : _bindgen_ty_75 = _bindgen_ty_75 :: rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_75 { rcl_interfaces__msg__ParameterType__PARAMETER_BOOL_ARRAY = 6 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY : _bindgen_ty_76 = _bindgen_ty_76 :: rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_76 { rcl_interfaces__msg__ParameterType__PARAMETER_INTEGER_ARRAY = 7 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY : _bindgen_ty_77 = _bindgen_ty_77 :: rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_77 { rcl_interfaces__msg__ParameterType__PARAMETER_DOUBLE_ARRAY = 8 , } pub const rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY : _bindgen_ty_78 = _bindgen_ty_78 :: rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_78 { rcl_interfaces__msg__ParameterType__PARAMETER_STRING_ARRAY = 9 , } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterType { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterType () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterType > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterType > () , 1usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterType))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterType > () , 1usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterType))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterType) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__ParameterType__Sequence { pub data : * mut rcl_interfaces__msg__ParameterType , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__ParameterType__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__ParameterType__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__ParameterType__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__ParameterType__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__ParameterType__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__ParameterType__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterType__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterType__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__ParameterType__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__msg__SetParametersResult { pub successful : bool , pub reason : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__SetParametersResult () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__SetParametersResult > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__SetParametersResult > () , 32usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__SetParametersResult))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__SetParametersResult > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__SetParametersResult))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . successful) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__SetParametersResult) , "::" , stringify ! (successful))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . reason) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__SetParametersResult) , "::" , stringify ! (reason))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__msg__SetParametersResult__Sequence { pub data : * mut rcl_interfaces__msg__SetParametersResult , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__msg__SetParametersResult__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__msg__SetParametersResult__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__msg__SetParametersResult__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__msg__SetParametersResult__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__msg__SetParametersResult__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__msg__SetParametersResult__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__SetParametersResult__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__SetParametersResult__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__msg__SetParametersResult__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__DescribeParameters_Request { pub names : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__DescribeParameters_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__DescribeParameters_Request > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__DescribeParameters_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . names) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request) , "::" , stringify ! (names))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__DescribeParameters_Request__Sequence { pub data : * mut rcl_interfaces__srv__DescribeParameters_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__DescribeParameters_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__DescribeParameters_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__DescribeParameters_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__DescribeParameters_Response { pub descriptors : rcl_interfaces__msg__ParameterDescriptor__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__DescribeParameters_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__DescribeParameters_Response > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__DescribeParameters_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . descriptors) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response) , "::" , stringify ! (descriptors))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__DescribeParameters_Response__Sequence { pub data : * mut rcl_interfaces__srv__DescribeParameters_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__DescribeParameters_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__DescribeParameters_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__DescribeParameters_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__DescribeParameters_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__DescribeParameters_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__GetParameterTypes_Request { pub names : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameterTypes_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameterTypes_Request > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameterTypes_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . names) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request) , "::" , stringify ! (names))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__GetParameterTypes_Request__Sequence { pub data : * mut rcl_interfaces__srv__GetParameterTypes_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameterTypes_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameterTypes_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameterTypes_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__GetParameterTypes_Response { pub types : rosidl_runtime_c__uint8__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameterTypes_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameterTypes_Response > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameterTypes_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . types) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response) , "::" , stringify ! (types))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__GetParameterTypes_Response__Sequence { pub data : * mut rcl_interfaces__srv__GetParameterTypes_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameterTypes_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameterTypes_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameterTypes_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameterTypes_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameterTypes_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__GetParameters_Request { pub names : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameters_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameters_Request > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameters_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameters_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameters_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . names) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Request) , "::" , stringify ! (names))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__GetParameters_Request__Sequence { pub data : * mut rcl_interfaces__srv__GetParameters_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameters_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameters_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameters_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameters_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameters_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__GetParameters_Response { pub values : rcl_interfaces__msg__ParameterValue__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameters_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameters_Response > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameters_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameters_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameters_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Response) , "::" , stringify ! (values))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__GetParameters_Response__Sequence { pub data : * mut rcl_interfaces__srv__GetParameters_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__GetParameters_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__GetParameters_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__GetParameters_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__GetParameters_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__GetParameters_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__GetParameters_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__GetParameters_Response__Sequence) , "::" , stringify ! (capacity))) ; } pub const rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE : _bindgen_ty_79 = _bindgen_ty_79 :: rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_79 { rcl_interfaces__srv__ListParameters_Request__DEPTH_RECURSIVE = 0 , } # [repr (C)] pub struct rcl_interfaces__srv__ListParameters_Request { pub prefixes : rosidl_runtime_c__String__Sequence , pub depth : u64 , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__ListParameters_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__ListParameters_Request > () , 32usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__ListParameters_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__ListParameters_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__ListParameters_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . prefixes) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Request) , "::" , stringify ! (prefixes))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . depth) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Request) , "::" , stringify ! (depth))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__ListParameters_Request__Sequence { pub data : * mut rcl_interfaces__srv__ListParameters_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__ListParameters_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__ListParameters_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__ListParameters_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__ListParameters_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__ListParameters_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__ListParameters_Response { pub result : rcl_interfaces__msg__ListParametersResult , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__ListParameters_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__ListParameters_Response > () , 48usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__ListParameters_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__ListParameters_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__ListParameters_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__ListParameters_Response__Sequence { pub data : * mut rcl_interfaces__srv__ListParameters_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__ListParameters_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__ListParameters_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__ListParameters_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__ListParameters_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__ListParameters_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__ListParameters_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__ListParameters_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParameters_Request { pub parameters : rcl_interfaces__msg__Parameter__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParameters_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParameters_Request > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParameters_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParameters_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParameters_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . parameters) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Request) , "::" , stringify ! (parameters))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParameters_Request__Sequence { pub data : * mut rcl_interfaces__srv__SetParameters_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParameters_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParameters_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParameters_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParameters_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParameters_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParameters_Response { pub results : rcl_interfaces__msg__SetParametersResult__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParameters_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParameters_Response > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParameters_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParameters_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParameters_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . results) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Response) , "::" , stringify ! (results))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParameters_Response__Sequence { pub data : * mut rcl_interfaces__srv__SetParameters_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParameters_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParameters_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParameters_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParameters_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParameters_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParameters_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParameters_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParametersAtomically_Request { pub parameters : rcl_interfaces__msg__Parameter__Sequence , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Request () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParametersAtomically_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParametersAtomically_Request > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParametersAtomically_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . parameters) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request) , "::" , stringify ! (parameters))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParametersAtomically_Request__Sequence { pub data : * mut rcl_interfaces__srv__SetParametersAtomically_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParametersAtomically_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParametersAtomically_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParametersAtomically_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct rcl_interfaces__srv__SetParametersAtomically_Response { pub result : rcl_interfaces__msg__SetParametersResult , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Response () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParametersAtomically_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParametersAtomically_Response > () , 32usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParametersAtomically_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct rcl_interfaces__srv__SetParametersAtomically_Response__Sequence { pub data : * mut rcl_interfaces__srv__SetParametersAtomically_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rcl_interfaces__srv__SetParametersAtomically_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rcl_interfaces__srv__SetParametersAtomically_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rcl_interfaces__srv__SetParametersAtomically_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rcl_interfaces__srv__SetParametersAtomically_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rcl_interfaces__srv__SetParametersAtomically_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct rosgraph_msgs__msg__Clock { pub clock : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_rosgraph_msgs__msg__Clock () { const UNINIT : :: std :: mem :: MaybeUninit < rosgraph_msgs__msg__Clock > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rosgraph_msgs__msg__Clock > () , 8usize , concat ! ("Size of: " , stringify ! (rosgraph_msgs__msg__Clock))) ; assert_eq ! (:: std :: mem :: align_of ::< rosgraph_msgs__msg__Clock > () , 4usize , concat ! ("Alignment of " , stringify ! (rosgraph_msgs__msg__Clock))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . clock) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rosgraph_msgs__msg__Clock) , "::" , stringify ! (clock))) ; } # [repr (C)] # [derive (Debug)] pub struct rosgraph_msgs__msg__Clock__Sequence { pub data : * mut rosgraph_msgs__msg__Clock , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_rosgraph_msgs__msg__Clock__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < rosgraph_msgs__msg__Clock__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< rosgraph_msgs__msg__Clock__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (rosgraph_msgs__msg__Clock__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< rosgraph_msgs__msg__Clock__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (rosgraph_msgs__msg__Clock__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (rosgraph_msgs__msg__Clock__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (rosgraph_msgs__msg__Clock__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (rosgraph_msgs__msg__Clock__Sequence) , "::" , stringify ! (capacity))) ; } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN : _bindgen_ty_80 = _bindgen_ty_80 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_80 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_UNKNOWN = 0 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING : _bindgen_ty_81 = _bindgen_ty_81 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_81 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_CHARGING = 1 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING : _bindgen_ty_82 = _bindgen_ty_82 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_82 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_DISCHARGING = 2 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING : _bindgen_ty_83 = _bindgen_ty_83 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_83 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_NOT_CHARGING = 3 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL : _bindgen_ty_84 = _bindgen_ty_84 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_84 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_STATUS_FULL = 4 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN : _bindgen_ty_85 = _bindgen_ty_85 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_85 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNKNOWN = 0 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD : _bindgen_ty_86 = _bindgen_ty_86 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_86 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_GOOD = 1 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT : _bindgen_ty_87 = _bindgen_ty_87 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_87 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERHEAT = 2 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD : _bindgen_ty_88 = _bindgen_ty_88 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_88 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_DEAD = 3 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE : _bindgen_ty_89 = _bindgen_ty_89 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_89 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE : _bindgen_ty_90 = _bindgen_ty_90 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_90 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD : _bindgen_ty_91 = _bindgen_ty_91 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_91 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_COLD = 6 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE : _bindgen_ty_92 = _bindgen_ty_92 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_92 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE : _bindgen_ty_93 = _bindgen_ty_93 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_93 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN : _bindgen_ty_94 = _bindgen_ty_94 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_94 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH : _bindgen_ty_95 = _bindgen_ty_95 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_95 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NIMH = 1 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION : _bindgen_ty_96 = _bindgen_ty_96 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_96 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LION = 2 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO : _bindgen_ty_97 = _bindgen_ty_97 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_97 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIPO = 3 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE : _bindgen_ty_98 = _bindgen_ty_98 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_98 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIFE = 4 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD : _bindgen_ty_99 = _bindgen_ty_99 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_99 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_NICD = 5 , } pub const sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN : _bindgen_ty_100 = _bindgen_ty_100 :: sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_100 { sensor_msgs__msg__BatteryState__POWER_SUPPLY_TECHNOLOGY_LIMN = 6 , } # [repr (C)] pub struct sensor_msgs__msg__BatteryState { pub header : std_msgs__msg__Header , pub voltage : f32 , pub temperature : f32 , pub current : f32 , pub charge : f32 , pub capacity : f32 , pub design_capacity : f32 , pub percentage : f32 , pub power_supply_status : u8 , pub power_supply_health : u8 , pub power_supply_technology : u8 , pub present : bool , pub cell_voltage : rosidl_runtime_c__float__Sequence , pub cell_temperature : rosidl_runtime_c__float__Sequence , pub location : rosidl_runtime_c__String , pub serial_number : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_sensor_msgs__msg__BatteryState () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__BatteryState > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__BatteryState > () , 160usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__BatteryState))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__BatteryState > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__BatteryState))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . voltage) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (voltage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . temperature) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (temperature))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . current) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (current))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . charge) as usize - ptr as usize } , 44usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (charge))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (capacity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . design_capacity) as usize - ptr as usize } , 52usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (design_capacity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . percentage) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (percentage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . power_supply_status) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (power_supply_status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . power_supply_health) as usize - ptr as usize } , 61usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (power_supply_health))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . power_supply_technology) as usize - ptr as usize } , 62usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (power_supply_technology))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . present) as usize - ptr as usize } , 63usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (present))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . cell_voltage) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (cell_voltage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . cell_temperature) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (cell_temperature))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . location) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (location))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . serial_number) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState) , "::" , stringify ! (serial_number))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__BatteryState__Sequence { pub data : * mut sensor_msgs__msg__BatteryState , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__BatteryState__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__BatteryState__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__BatteryState__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__BatteryState__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__BatteryState__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__BatteryState__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__BatteryState__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__RegionOfInterest { pub x_offset : u32 , pub y_offset : u32 , pub height : u32 , pub width : u32 , pub do_rectify : bool , } # [test] fn bindgen_test_layout_sensor_msgs__msg__RegionOfInterest () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__RegionOfInterest > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__RegionOfInterest > () , 20usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__RegionOfInterest))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__RegionOfInterest > () , 4usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__RegionOfInterest))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . x_offset) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest) , "::" , stringify ! (x_offset))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . y_offset) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest) , "::" , stringify ! (y_offset))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . height) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest) , "::" , stringify ! (height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . width) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest) , "::" , stringify ! (width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . do_rectify) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest) , "::" , stringify ! (do_rectify))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__RegionOfInterest__Sequence { pub data : * mut sensor_msgs__msg__RegionOfInterest , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__RegionOfInterest__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__RegionOfInterest__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__RegionOfInterest__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__RegionOfInterest__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__RegionOfInterest__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__RegionOfInterest__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RegionOfInterest__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__CameraInfo { pub header : std_msgs__msg__Header , pub height : u32 , pub width : u32 , pub distortion_model : rosidl_runtime_c__String , pub d : rosidl_runtime_c__double__Sequence , pub k : [f64 ; 9usize] , pub r : [f64 ; 9usize] , pub p : [f64 ; 12usize] , pub binning_x : u32 , pub binning_y : u32 , pub roi : sensor_msgs__msg__RegionOfInterest , } # [test] fn bindgen_test_layout_sensor_msgs__msg__CameraInfo () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__CameraInfo > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__CameraInfo > () , 360usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__CameraInfo))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__CameraInfo > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__CameraInfo))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . height) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . width) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . distortion_model) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (distortion_model))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . d) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (d))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . k) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (k))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . r) as usize - ptr as usize } , 160usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (r))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . p) as usize - ptr as usize } , 232usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (p))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . binning_x) as usize - ptr as usize } , 328usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (binning_x))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . binning_y) as usize - ptr as usize } , 332usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (binning_y))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . roi) as usize - ptr as usize } , 336usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo) , "::" , stringify ! (roi))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__CameraInfo__Sequence { pub data : * mut sensor_msgs__msg__CameraInfo , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__CameraInfo__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__CameraInfo__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__CameraInfo__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__CameraInfo__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__CameraInfo__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__CameraInfo__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CameraInfo__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__ChannelFloat32 { pub name : rosidl_runtime_c__String , pub values : rosidl_runtime_c__float__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__ChannelFloat32 () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__ChannelFloat32 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__ChannelFloat32 > () , 48usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__ChannelFloat32))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__ChannelFloat32 > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__ChannelFloat32))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__ChannelFloat32) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__ChannelFloat32) , "::" , stringify ! (values))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__ChannelFloat32__Sequence { pub data : * mut sensor_msgs__msg__ChannelFloat32 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__ChannelFloat32__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__ChannelFloat32__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__ChannelFloat32__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__ChannelFloat32__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__ChannelFloat32__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__ChannelFloat32__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__ChannelFloat32__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__ChannelFloat32__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__ChannelFloat32__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__CompressedImage { pub header : std_msgs__msg__Header , pub format : rosidl_runtime_c__String , pub data : rosidl_runtime_c__uint8__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__CompressedImage () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__CompressedImage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__CompressedImage > () , 80usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__CompressedImage))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__CompressedImage > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__CompressedImage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . format) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage) , "::" , stringify ! (format))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__CompressedImage__Sequence { pub data : * mut sensor_msgs__msg__CompressedImage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__CompressedImage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__CompressedImage__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__CompressedImage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__CompressedImage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__CompressedImage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__CompressedImage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__CompressedImage__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__FluidPressure { pub header : std_msgs__msg__Header , pub fluid_pressure : f64 , pub variance : f64 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__FluidPressure () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__FluidPressure > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__FluidPressure > () , 48usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__FluidPressure))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__FluidPressure > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__FluidPressure))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . fluid_pressure) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure) , "::" , stringify ! (fluid_pressure))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . variance) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure) , "::" , stringify ! (variance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__FluidPressure__Sequence { pub data : * mut sensor_msgs__msg__FluidPressure , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__FluidPressure__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__FluidPressure__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__FluidPressure__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__FluidPressure__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__FluidPressure__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__FluidPressure__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__FluidPressure__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__Illuminance { pub header : std_msgs__msg__Header , pub illuminance : f64 , pub variance : f64 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Illuminance () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Illuminance > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Illuminance > () , 48usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Illuminance))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Illuminance > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Illuminance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . illuminance) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance) , "::" , stringify ! (illuminance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . variance) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance) , "::" , stringify ! (variance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Illuminance__Sequence { pub data : * mut sensor_msgs__msg__Illuminance , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Illuminance__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Illuminance__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Illuminance__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Illuminance__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Illuminance__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Illuminance__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Illuminance__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__Image { pub header : std_msgs__msg__Header , pub height : u32 , pub width : u32 , pub encoding : rosidl_runtime_c__String , pub is_bigendian : u8 , pub step : u32 , pub data : rosidl_runtime_c__uint8__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Image () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Image > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Image > () , 96usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Image))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Image > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Image))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . height) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . width) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . encoding) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (encoding))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . is_bigendian) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (is_bigendian))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . step) as usize - ptr as usize } , 68usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (step))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Image__Sequence { pub data : * mut sensor_msgs__msg__Image , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Image__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Image__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Image__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Image__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Image__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Image__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Image__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__Imu { pub header : std_msgs__msg__Header , pub orientation : geometry_msgs__msg__Quaternion , pub orientation_covariance : [f64 ; 9usize] , pub angular_velocity : geometry_msgs__msg__Vector3 , pub angular_velocity_covariance : [f64 ; 9usize] , pub linear_acceleration : geometry_msgs__msg__Vector3 , pub linear_acceleration_covariance : [f64 ; 9usize] , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Imu () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Imu > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Imu > () , 328usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Imu))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Imu > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Imu))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . orientation) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (orientation))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . orientation_covariance) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (orientation_covariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angular_velocity) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (angular_velocity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angular_velocity_covariance) as usize - ptr as usize } , 160usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (angular_velocity_covariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . linear_acceleration) as usize - ptr as usize } , 232usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (linear_acceleration))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . linear_acceleration_covariance) as usize - ptr as usize } , 256usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu) , "::" , stringify ! (linear_acceleration_covariance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Imu__Sequence { pub data : * mut sensor_msgs__msg__Imu , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Imu__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Imu__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Imu__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Imu__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Imu__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Imu__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Imu__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__JointState { pub header : std_msgs__msg__Header , pub name : rosidl_runtime_c__String__Sequence , pub position : rosidl_runtime_c__double__Sequence , pub velocity : rosidl_runtime_c__double__Sequence , pub effort : rosidl_runtime_c__double__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JointState () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JointState > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JointState > () , 128usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JointState))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JointState > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JointState))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . position) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState) , "::" , stringify ! (position))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . velocity) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState) , "::" , stringify ! (velocity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . effort) as usize - ptr as usize } , 104usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState) , "::" , stringify ! (effort))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__JointState__Sequence { pub data : * mut sensor_msgs__msg__JointState , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JointState__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JointState__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JointState__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JointState__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JointState__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JointState__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JointState__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__Joy { pub header : std_msgs__msg__Header , pub axes : rosidl_runtime_c__float__Sequence , pub buttons : rosidl_runtime_c__int32__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Joy () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Joy > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Joy > () , 80usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Joy))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Joy > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Joy))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . axes) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy) , "::" , stringify ! (axes))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . buttons) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy) , "::" , stringify ! (buttons))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Joy__Sequence { pub data : * mut sensor_msgs__msg__Joy , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Joy__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Joy__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Joy__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Joy__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Joy__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Joy__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Joy__Sequence) , "::" , stringify ! (capacity))) ; } pub const sensor_msgs__msg__JoyFeedback__TYPE_LED : _bindgen_ty_101 = _bindgen_ty_101 :: sensor_msgs__msg__JoyFeedback__TYPE_LED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_101 { sensor_msgs__msg__JoyFeedback__TYPE_LED = 0 , } pub const sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE : _bindgen_ty_102 = _bindgen_ty_102 :: sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_102 { sensor_msgs__msg__JoyFeedback__TYPE_RUMBLE = 1 , } pub const sensor_msgs__msg__JoyFeedback__TYPE_BUZZER : _bindgen_ty_103 = _bindgen_ty_103 :: sensor_msgs__msg__JoyFeedback__TYPE_BUZZER ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_103 { sensor_msgs__msg__JoyFeedback__TYPE_BUZZER = 2 , } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__JoyFeedback { pub type_ : u8 , pub id : u8 , pub intensity : f32 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JoyFeedback () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JoyFeedback > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JoyFeedback > () , 8usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JoyFeedback))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JoyFeedback > () , 4usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JoyFeedback))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . intensity) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback) , "::" , stringify ! (intensity))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__JoyFeedback__Sequence { pub data : * mut sensor_msgs__msg__JoyFeedback , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JoyFeedback__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JoyFeedback__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JoyFeedback__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JoyFeedback__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JoyFeedback__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JoyFeedback__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedback__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__JoyFeedbackArray { pub array : sensor_msgs__msg__JoyFeedback__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JoyFeedbackArray () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JoyFeedbackArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JoyFeedbackArray > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JoyFeedbackArray > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JoyFeedbackArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . array) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray) , "::" , stringify ! (array))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__JoyFeedbackArray__Sequence { pub data : * mut sensor_msgs__msg__JoyFeedbackArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__JoyFeedbackArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__JoyFeedbackArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__JoyFeedbackArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__JoyFeedbackArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__JoyFeedbackArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__JoyFeedbackArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__LaserEcho { pub echoes : rosidl_runtime_c__float__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__LaserEcho () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__LaserEcho > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__LaserEcho > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__LaserEcho))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__LaserEcho > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__LaserEcho))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . echoes) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserEcho) , "::" , stringify ! (echoes))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__LaserEcho__Sequence { pub data : * mut sensor_msgs__msg__LaserEcho , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__LaserEcho__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__LaserEcho__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__LaserEcho__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__LaserEcho__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__LaserEcho__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__LaserEcho__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserEcho__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserEcho__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserEcho__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__LaserScan { pub header : std_msgs__msg__Header , pub angle_min : f32 , pub angle_max : f32 , pub angle_increment : f32 , pub time_increment : f32 , pub scan_time : f32 , pub range_min : f32 , pub range_max : f32 , pub ranges : rosidl_runtime_c__float__Sequence , pub intensities : rosidl_runtime_c__float__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__LaserScan () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__LaserScan > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__LaserScan > () , 112usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__LaserScan))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__LaserScan > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__LaserScan))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_min) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (angle_min))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_max) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (angle_max))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_increment) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (angle_increment))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_increment) as usize - ptr as usize } , 44usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (time_increment))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . scan_time) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (scan_time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . range_min) as usize - ptr as usize } , 52usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (range_min))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . range_max) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (range_max))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ranges) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (ranges))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . intensities) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan) , "::" , stringify ! (intensities))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__LaserScan__Sequence { pub data : * mut sensor_msgs__msg__LaserScan , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__LaserScan__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__LaserScan__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__LaserScan__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__LaserScan__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__LaserScan__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__LaserScan__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__LaserScan__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__MagneticField { pub header : std_msgs__msg__Header , pub magnetic_field : geometry_msgs__msg__Vector3 , pub magnetic_field_covariance : [f64 ; 9usize] , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MagneticField () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MagneticField > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MagneticField > () , 128usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MagneticField))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MagneticField > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MagneticField))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . magnetic_field) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField) , "::" , stringify ! (magnetic_field))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . magnetic_field_covariance) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField) , "::" , stringify ! (magnetic_field_covariance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__MagneticField__Sequence { pub data : * mut sensor_msgs__msg__MagneticField , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MagneticField__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MagneticField__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MagneticField__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MagneticField__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MagneticField__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MagneticField__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MagneticField__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__MultiDOFJointState { pub header : std_msgs__msg__Header , pub joint_names : rosidl_runtime_c__String__Sequence , pub transforms : geometry_msgs__msg__Transform__Sequence , pub twist : geometry_msgs__msg__Twist__Sequence , pub wrench : geometry_msgs__msg__Wrench__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MultiDOFJointState () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MultiDOFJointState > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MultiDOFJointState > () , 128usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MultiDOFJointState))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MultiDOFJointState > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MultiDOFJointState))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . joint_names) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState) , "::" , stringify ! (joint_names))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transforms) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState) , "::" , stringify ! (transforms))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . twist) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState) , "::" , stringify ! (twist))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wrench) as usize - ptr as usize } , 104usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState) , "::" , stringify ! (wrench))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__MultiDOFJointState__Sequence { pub data : * mut sensor_msgs__msg__MultiDOFJointState , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MultiDOFJointState__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MultiDOFJointState__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MultiDOFJointState__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MultiDOFJointState__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MultiDOFJointState__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MultiDOFJointState__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiDOFJointState__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__MultiEchoLaserScan { pub header : std_msgs__msg__Header , pub angle_min : f32 , pub angle_max : f32 , pub angle_increment : f32 , pub time_increment : f32 , pub scan_time : f32 , pub range_min : f32 , pub range_max : f32 , pub ranges : sensor_msgs__msg__LaserEcho__Sequence , pub intensities : sensor_msgs__msg__LaserEcho__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MultiEchoLaserScan () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MultiEchoLaserScan > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MultiEchoLaserScan > () , 112usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MultiEchoLaserScan > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_min) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (angle_min))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_max) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (angle_max))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . angle_increment) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (angle_increment))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_increment) as usize - ptr as usize } , 44usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (time_increment))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . scan_time) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (scan_time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . range_min) as usize - ptr as usize } , 52usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (range_min))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . range_max) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (range_max))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ranges) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (ranges))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . intensities) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan) , "::" , stringify ! (intensities))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__MultiEchoLaserScan__Sequence { pub data : * mut sensor_msgs__msg__MultiEchoLaserScan , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__MultiEchoLaserScan__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__MultiEchoLaserScan__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__MultiEchoLaserScan__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__MultiEchoLaserScan__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__MultiEchoLaserScan__Sequence) , "::" , stringify ! (capacity))) ; } pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN : _bindgen_ty_104 = _bindgen_ty_104 :: sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_104 { sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_UNKNOWN = 0 , } pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED : _bindgen_ty_105 = _bindgen_ty_105 :: sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_105 { sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_APPROXIMATED = 1 , } pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN : _bindgen_ty_106 = _bindgen_ty_106 :: sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_106 { sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_DIAGONAL_KNOWN = 2 , } pub const sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN : _bindgen_ty_107 = _bindgen_ty_107 :: sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_107 { sensor_msgs__msg__NavSatFix__COVARIANCE_TYPE_KNOWN = 3 , } pub const sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX : _bindgen_ty_108 = _bindgen_ty_108 :: sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX ; # [repr (i32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_108 { sensor_msgs__msg__NavSatStatus__STATUS_NO_FIX = - 1 , } pub const sensor_msgs__msg__NavSatStatus__STATUS_FIX : _bindgen_ty_109 = _bindgen_ty_109 :: sensor_msgs__msg__NavSatStatus__STATUS_FIX ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_109 { sensor_msgs__msg__NavSatStatus__STATUS_FIX = 0 , } pub const sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX : _bindgen_ty_110 = _bindgen_ty_110 :: sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_110 { sensor_msgs__msg__NavSatStatus__STATUS_SBAS_FIX = 1 , } pub const sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX : _bindgen_ty_111 = _bindgen_ty_111 :: sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_111 { sensor_msgs__msg__NavSatStatus__STATUS_GBAS_FIX = 2 , } pub const sensor_msgs__msg__NavSatStatus__SERVICE_GPS : _bindgen_ty_112 = _bindgen_ty_112 :: sensor_msgs__msg__NavSatStatus__SERVICE_GPS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_112 { sensor_msgs__msg__NavSatStatus__SERVICE_GPS = 1 , } pub const sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS : _bindgen_ty_113 = _bindgen_ty_113 :: sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_113 { sensor_msgs__msg__NavSatStatus__SERVICE_GLONASS = 2 , } pub const sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS : _bindgen_ty_114 = _bindgen_ty_114 :: sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_114 { sensor_msgs__msg__NavSatStatus__SERVICE_COMPASS = 4 , } pub const sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO : _bindgen_ty_115 = _bindgen_ty_115 :: sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_115 { sensor_msgs__msg__NavSatStatus__SERVICE_GALILEO = 8 , } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__NavSatStatus { pub status : i8 , pub service : u16 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__NavSatStatus () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__NavSatStatus > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__NavSatStatus > () , 4usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__NavSatStatus))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__NavSatStatus > () , 2usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__NavSatStatus))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatStatus) , "::" , stringify ! (status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . service) as usize - ptr as usize } , 2usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatStatus) , "::" , stringify ! (service))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__NavSatStatus__Sequence { pub data : * mut sensor_msgs__msg__NavSatStatus , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__NavSatStatus__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__NavSatStatus__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__NavSatStatus__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__NavSatStatus__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__NavSatStatus__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__NavSatStatus__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatStatus__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatStatus__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatStatus__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__NavSatFix { pub header : std_msgs__msg__Header , pub status : sensor_msgs__msg__NavSatStatus , pub latitude : f64 , pub longitude : f64 , pub altitude : f64 , pub position_covariance : [f64 ; 9usize] , pub position_covariance_type : u8 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__NavSatFix () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__NavSatFix > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__NavSatFix > () , 144usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__NavSatFix))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__NavSatFix > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__NavSatFix))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . latitude) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (latitude))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . longitude) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (longitude))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . altitude) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (altitude))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . position_covariance) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (position_covariance))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . position_covariance_type) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix) , "::" , stringify ! (position_covariance_type))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__NavSatFix__Sequence { pub data : * mut sensor_msgs__msg__NavSatFix , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__NavSatFix__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__NavSatFix__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__NavSatFix__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__NavSatFix__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__NavSatFix__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__NavSatFix__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__NavSatFix__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__PointCloud { pub header : std_msgs__msg__Header , pub points : geometry_msgs__msg__Point32__Sequence , pub channels : sensor_msgs__msg__ChannelFloat32__Sequence , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointCloud () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointCloud > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointCloud > () , 80usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointCloud))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointCloud > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointCloud))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud) , "::" , stringify ! (points))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . channels) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud) , "::" , stringify ! (channels))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__PointCloud__Sequence { pub data : * mut sensor_msgs__msg__PointCloud , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointCloud__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointCloud__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointCloud__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointCloud__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointCloud__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointCloud__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud__Sequence) , "::" , stringify ! (capacity))) ; } pub const sensor_msgs__msg__PointField__INT8 : _bindgen_ty_116 = _bindgen_ty_116 :: sensor_msgs__msg__PointField__INT8 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_116 { sensor_msgs__msg__PointField__INT8 = 1 , } pub const sensor_msgs__msg__PointField__UINT8 : _bindgen_ty_117 = _bindgen_ty_117 :: sensor_msgs__msg__PointField__UINT8 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_117 { sensor_msgs__msg__PointField__UINT8 = 2 , } pub const sensor_msgs__msg__PointField__INT16 : _bindgen_ty_118 = _bindgen_ty_118 :: sensor_msgs__msg__PointField__INT16 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_118 { sensor_msgs__msg__PointField__INT16 = 3 , } pub const sensor_msgs__msg__PointField__UINT16 : _bindgen_ty_119 = _bindgen_ty_119 :: sensor_msgs__msg__PointField__UINT16 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_119 { sensor_msgs__msg__PointField__UINT16 = 4 , } pub const sensor_msgs__msg__PointField__INT32 : _bindgen_ty_120 = _bindgen_ty_120 :: sensor_msgs__msg__PointField__INT32 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_120 { sensor_msgs__msg__PointField__INT32 = 5 , } pub const sensor_msgs__msg__PointField__UINT32 : _bindgen_ty_121 = _bindgen_ty_121 :: sensor_msgs__msg__PointField__UINT32 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_121 { sensor_msgs__msg__PointField__UINT32 = 6 , } pub const sensor_msgs__msg__PointField__FLOAT32 : _bindgen_ty_122 = _bindgen_ty_122 :: sensor_msgs__msg__PointField__FLOAT32 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_122 { sensor_msgs__msg__PointField__FLOAT32 = 7 , } pub const sensor_msgs__msg__PointField__FLOAT64 : _bindgen_ty_123 = _bindgen_ty_123 :: sensor_msgs__msg__PointField__FLOAT64 ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_123 { sensor_msgs__msg__PointField__FLOAT64 = 8 , } # [repr (C)] pub struct sensor_msgs__msg__PointField { pub name : rosidl_runtime_c__String , pub offset : u32 , pub datatype : u8 , pub count : u32 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointField () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointField > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointField > () , 40usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointField))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointField > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointField))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . offset) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField) , "::" , stringify ! (offset))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . datatype) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField) , "::" , stringify ! (datatype))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . count) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField) , "::" , stringify ! (count))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__PointField__Sequence { pub data : * mut sensor_msgs__msg__PointField , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointField__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointField__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointField__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointField__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointField__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointField__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointField__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__PointCloud2 { pub header : std_msgs__msg__Header , pub height : u32 , pub width : u32 , pub fields : sensor_msgs__msg__PointField__Sequence , pub is_bigendian : bool , pub point_step : u32 , pub row_step : u32 , pub data : rosidl_runtime_c__uint8__Sequence , pub is_dense : bool , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointCloud2 () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointCloud2 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointCloud2 > () , 112usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointCloud2))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointCloud2 > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointCloud2))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . height) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (height))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . width) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (width))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . fields) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (fields))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . is_bigendian) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (is_bigendian))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . point_step) as usize - ptr as usize } , 68usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (point_step))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . row_step) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (row_step))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . is_dense) as usize - ptr as usize } , 104usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2) , "::" , stringify ! (is_dense))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__PointCloud2__Sequence { pub data : * mut sensor_msgs__msg__PointCloud2 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__PointCloud2__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__PointCloud2__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__PointCloud2__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__PointCloud2__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__PointCloud2__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__PointCloud2__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__PointCloud2__Sequence) , "::" , stringify ! (capacity))) ; } pub const sensor_msgs__msg__Range__ULTRASOUND : _bindgen_ty_124 = _bindgen_ty_124 :: sensor_msgs__msg__Range__ULTRASOUND ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_124 { sensor_msgs__msg__Range__ULTRASOUND = 0 , } pub const sensor_msgs__msg__Range__INFRARED : _bindgen_ty_125 = _bindgen_ty_125 :: sensor_msgs__msg__Range__INFRARED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_125 { sensor_msgs__msg__Range__INFRARED = 1 , } # [repr (C)] pub struct sensor_msgs__msg__Range { pub header : std_msgs__msg__Header , pub radiation_type : u8 , pub field_of_view : f32 , pub min_range : f32 , pub max_range : f32 , pub range : f32 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Range () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Range > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Range > () , 56usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Range))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Range > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Range))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . radiation_type) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (radiation_type))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . field_of_view) as usize - ptr as usize } , 36usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (field_of_view))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . min_range) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (min_range))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . max_range) as usize - ptr as usize } , 44usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (max_range))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . range) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range) , "::" , stringify ! (range))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Range__Sequence { pub data : * mut sensor_msgs__msg__Range , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Range__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Range__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Range__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Range__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Range__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Range__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Range__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__RelativeHumidity { pub header : std_msgs__msg__Header , pub relative_humidity : f64 , pub variance : f64 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__RelativeHumidity () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__RelativeHumidity > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__RelativeHumidity > () , 48usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__RelativeHumidity))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__RelativeHumidity > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__RelativeHumidity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . relative_humidity) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity) , "::" , stringify ! (relative_humidity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . variance) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity) , "::" , stringify ! (variance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__RelativeHumidity__Sequence { pub data : * mut sensor_msgs__msg__RelativeHumidity , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__RelativeHumidity__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__RelativeHumidity__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__RelativeHumidity__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__RelativeHumidity__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__RelativeHumidity__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__RelativeHumidity__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__RelativeHumidity__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__Temperature { pub header : std_msgs__msg__Header , pub temperature : f64 , pub variance : f64 , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Temperature () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Temperature > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Temperature > () , 48usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Temperature))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Temperature > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Temperature))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . temperature) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature) , "::" , stringify ! (temperature))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . variance) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature) , "::" , stringify ! (variance))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__Temperature__Sequence { pub data : * mut sensor_msgs__msg__Temperature , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__Temperature__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__Temperature__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__Temperature__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__Temperature__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__Temperature__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__Temperature__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__Temperature__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__msg__TimeReference { pub header : std_msgs__msg__Header , pub time_ref : builtin_interfaces__msg__Time , pub source : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_sensor_msgs__msg__TimeReference () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__TimeReference > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__TimeReference > () , 64usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__TimeReference))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__TimeReference > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__TimeReference))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_ref) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference) , "::" , stringify ! (time_ref))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . source) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference) , "::" , stringify ! (source))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__msg__TimeReference__Sequence { pub data : * mut sensor_msgs__msg__TimeReference , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__msg__TimeReference__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__msg__TimeReference__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__msg__TimeReference__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__msg__TimeReference__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__msg__TimeReference__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__msg__TimeReference__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__msg__TimeReference__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__srv__SetCameraInfo_Request { pub camera_info : sensor_msgs__msg__CameraInfo , } # [test] fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Request () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__srv__SetCameraInfo_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__srv__SetCameraInfo_Request > () , 360usize , concat ! ("Size of: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__srv__SetCameraInfo_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . camera_info) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request) , "::" , stringify ! (camera_info))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__srv__SetCameraInfo_Request__Sequence { pub data : * mut sensor_msgs__srv__SetCameraInfo_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__srv__SetCameraInfo_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__srv__SetCameraInfo_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__srv__SetCameraInfo_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct sensor_msgs__srv__SetCameraInfo_Response { pub success : bool , pub status_message : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Response () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__srv__SetCameraInfo_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__srv__SetCameraInfo_Response > () , 32usize , concat ! ("Size of: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__srv__SetCameraInfo_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . success) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response) , "::" , stringify ! (success))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status_message) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response) , "::" , stringify ! (status_message))) ; } # [repr (C)] # [derive (Debug)] pub struct sensor_msgs__srv__SetCameraInfo_Response__Sequence { pub data : * mut sensor_msgs__srv__SetCameraInfo_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_sensor_msgs__srv__SetCameraInfo_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < sensor_msgs__srv__SetCameraInfo_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< sensor_msgs__srv__SetCameraInfo_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< sensor_msgs__srv__SetCameraInfo_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (sensor_msgs__srv__SetCameraInfo_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__MeshTriangle { pub vertex_indices : [u32 ; 3usize] , } # [test] fn bindgen_test_layout_shape_msgs__msg__MeshTriangle () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__MeshTriangle > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__MeshTriangle > () , 12usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__MeshTriangle))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__MeshTriangle > () , 4usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__MeshTriangle))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . vertex_indices) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__MeshTriangle) , "::" , stringify ! (vertex_indices))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__MeshTriangle__Sequence { pub data : * mut shape_msgs__msg__MeshTriangle , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_shape_msgs__msg__MeshTriangle__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__MeshTriangle__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__MeshTriangle__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__MeshTriangle__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__MeshTriangle__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__MeshTriangle__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__MeshTriangle__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__MeshTriangle__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__MeshTriangle__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__Mesh { pub triangles : shape_msgs__msg__MeshTriangle__Sequence , pub vertices : geometry_msgs__msg__Point__Sequence , } # [test] fn bindgen_test_layout_shape_msgs__msg__Mesh () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__Mesh > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__Mesh > () , 48usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__Mesh))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__Mesh > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__Mesh))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . triangles) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Mesh) , "::" , stringify ! (triangles))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . vertices) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Mesh) , "::" , stringify ! (vertices))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__Mesh__Sequence { pub data : * mut shape_msgs__msg__Mesh , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_shape_msgs__msg__Mesh__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__Mesh__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__Mesh__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__Mesh__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__Mesh__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__Mesh__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Mesh__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Mesh__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Mesh__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__Plane { pub coef : [f64 ; 4usize] , } # [test] fn bindgen_test_layout_shape_msgs__msg__Plane () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__Plane > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__Plane > () , 32usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__Plane))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__Plane > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__Plane))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . coef) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Plane) , "::" , stringify ! (coef))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__Plane__Sequence { pub data : * mut shape_msgs__msg__Plane , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_shape_msgs__msg__Plane__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__Plane__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__Plane__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__Plane__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__Plane__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__Plane__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Plane__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Plane__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__Plane__Sequence) , "::" , stringify ! (capacity))) ; } pub const shape_msgs__msg__SolidPrimitive__BOX : _bindgen_ty_126 = _bindgen_ty_126 :: shape_msgs__msg__SolidPrimitive__BOX ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_126 { shape_msgs__msg__SolidPrimitive__BOX = 1 , } pub const shape_msgs__msg__SolidPrimitive__SPHERE : _bindgen_ty_127 = _bindgen_ty_127 :: shape_msgs__msg__SolidPrimitive__SPHERE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_127 { shape_msgs__msg__SolidPrimitive__SPHERE = 2 , } pub const shape_msgs__msg__SolidPrimitive__CYLINDER : _bindgen_ty_128 = _bindgen_ty_128 :: shape_msgs__msg__SolidPrimitive__CYLINDER ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_128 { shape_msgs__msg__SolidPrimitive__CYLINDER = 3 , } pub const shape_msgs__msg__SolidPrimitive__CONE : _bindgen_ty_129 = _bindgen_ty_129 :: shape_msgs__msg__SolidPrimitive__CONE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_129 { shape_msgs__msg__SolidPrimitive__CONE = 4 , } pub const shape_msgs__msg__SolidPrimitive__PRISM : _bindgen_ty_130 = _bindgen_ty_130 :: shape_msgs__msg__SolidPrimitive__PRISM ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_130 { shape_msgs__msg__SolidPrimitive__PRISM = 5 , } pub const shape_msgs__msg__SolidPrimitive__BOX_X : _bindgen_ty_131 = _bindgen_ty_131 :: shape_msgs__msg__SolidPrimitive__BOX_X ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_131 { shape_msgs__msg__SolidPrimitive__BOX_X = 0 , } pub const shape_msgs__msg__SolidPrimitive__BOX_Y : _bindgen_ty_132 = _bindgen_ty_132 :: shape_msgs__msg__SolidPrimitive__BOX_Y ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_132 { shape_msgs__msg__SolidPrimitive__BOX_Y = 1 , } pub const shape_msgs__msg__SolidPrimitive__BOX_Z : _bindgen_ty_133 = _bindgen_ty_133 :: shape_msgs__msg__SolidPrimitive__BOX_Z ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_133 { shape_msgs__msg__SolidPrimitive__BOX_Z = 2 , } pub const shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS : _bindgen_ty_134 = _bindgen_ty_134 :: shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_134 { shape_msgs__msg__SolidPrimitive__SPHERE_RADIUS = 0 , } pub const shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT : _bindgen_ty_135 = _bindgen_ty_135 :: shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_135 { shape_msgs__msg__SolidPrimitive__CYLINDER_HEIGHT = 0 , } pub const shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS : _bindgen_ty_136 = _bindgen_ty_136 :: shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_136 { shape_msgs__msg__SolidPrimitive__CYLINDER_RADIUS = 1 , } pub const shape_msgs__msg__SolidPrimitive__CONE_HEIGHT : _bindgen_ty_137 = _bindgen_ty_137 :: shape_msgs__msg__SolidPrimitive__CONE_HEIGHT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_137 { shape_msgs__msg__SolidPrimitive__CONE_HEIGHT = 0 , } pub const shape_msgs__msg__SolidPrimitive__CONE_RADIUS : _bindgen_ty_138 = _bindgen_ty_138 :: shape_msgs__msg__SolidPrimitive__CONE_RADIUS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_138 { shape_msgs__msg__SolidPrimitive__CONE_RADIUS = 1 , } pub const shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT : _bindgen_ty_139 = _bindgen_ty_139 :: shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_139 { shape_msgs__msg__SolidPrimitive__PRISM_HEIGHT = 0 , } pub const shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE : _bindgen_ty_140 = _bindgen_ty_140 :: shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_140 { shape_msgs__msg__SolidPrimitive__dimensions__MAX_SIZE = 3 , } # [repr (C)] pub struct shape_msgs__msg__SolidPrimitive { pub type_ : u8 , pub dimensions : rosidl_runtime_c__double__Sequence , pub polygon : geometry_msgs__msg__Polygon , } # [test] fn bindgen_test_layout_shape_msgs__msg__SolidPrimitive () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__SolidPrimitive > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__SolidPrimitive > () , 56usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__SolidPrimitive))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__SolidPrimitive > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__SolidPrimitive))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . dimensions) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive) , "::" , stringify ! (dimensions))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . polygon) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive) , "::" , stringify ! (polygon))) ; } # [repr (C)] # [derive (Debug)] pub struct shape_msgs__msg__SolidPrimitive__Sequence { pub data : * mut shape_msgs__msg__SolidPrimitive , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_shape_msgs__msg__SolidPrimitive__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < shape_msgs__msg__SolidPrimitive__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< shape_msgs__msg__SolidPrimitive__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (shape_msgs__msg__SolidPrimitive__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< shape_msgs__msg__SolidPrimitive__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (shape_msgs__msg__SolidPrimitive__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (shape_msgs__msg__SolidPrimitive__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct statistics_msgs__msg__StatisticDataPoint { pub data_type : u8 , pub data : f64 , } # [test] fn bindgen_test_layout_statistics_msgs__msg__StatisticDataPoint () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__StatisticDataPoint > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__StatisticDataPoint > () , 16usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__StatisticDataPoint))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__StatisticDataPoint > () , 8usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__StatisticDataPoint))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data_type) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataPoint) , "::" , stringify ! (data_type))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataPoint) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct statistics_msgs__msg__StatisticDataPoint__Sequence { pub data : * mut statistics_msgs__msg__StatisticDataPoint , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_statistics_msgs__msg__StatisticDataPoint__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__StatisticDataPoint__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__StatisticDataPoint__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__StatisticDataPoint__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__StatisticDataPoint__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__StatisticDataPoint__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataPoint__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataPoint__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataPoint__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct statistics_msgs__msg__MetricsMessage { pub measurement_source_name : rosidl_runtime_c__String , pub metrics_source : rosidl_runtime_c__String , pub unit : rosidl_runtime_c__String , pub window_start : builtin_interfaces__msg__Time , pub window_stop : builtin_interfaces__msg__Time , pub statistics : statistics_msgs__msg__StatisticDataPoint__Sequence , } # [test] fn bindgen_test_layout_statistics_msgs__msg__MetricsMessage () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__MetricsMessage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__MetricsMessage > () , 112usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__MetricsMessage))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__MetricsMessage > () , 8usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__MetricsMessage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . measurement_source_name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (measurement_source_name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . metrics_source) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (metrics_source))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . unit) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (unit))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . window_start) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (window_start))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . window_stop) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (window_stop))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . statistics) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage) , "::" , stringify ! (statistics))) ; } # [repr (C)] # [derive (Debug)] pub struct statistics_msgs__msg__MetricsMessage__Sequence { pub data : * mut statistics_msgs__msg__MetricsMessage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_statistics_msgs__msg__MetricsMessage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__MetricsMessage__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__MetricsMessage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__MetricsMessage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__MetricsMessage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__MetricsMessage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__MetricsMessage__Sequence) , "::" , stringify ! (capacity))) ; } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED : _bindgen_ty_141 = _bindgen_ty_141 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_141 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_UNINITIALIZED = 0 , } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE : _bindgen_ty_142 = _bindgen_ty_142 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_142 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_AVERAGE = 1 , } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM : _bindgen_ty_143 = _bindgen_ty_143 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_143 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MINIMUM = 2 , } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM : _bindgen_ty_144 = _bindgen_ty_144 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_144 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_MAXIMUM = 3 , } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV : _bindgen_ty_145 = _bindgen_ty_145 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_145 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_STDDEV = 4 , } pub const statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT : _bindgen_ty_146 = _bindgen_ty_146 :: statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_146 { statistics_msgs__msg__StatisticDataType__STATISTICS_DATA_TYPE_SAMPLE_COUNT = 5 , } # [repr (C)] # [derive (Debug)] pub struct statistics_msgs__msg__StatisticDataType { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_statistics_msgs__msg__StatisticDataType () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__StatisticDataType > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__StatisticDataType > () , 1usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__StatisticDataType))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__StatisticDataType > () , 1usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__StatisticDataType))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataType) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct statistics_msgs__msg__StatisticDataType__Sequence { pub data : * mut statistics_msgs__msg__StatisticDataType , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_statistics_msgs__msg__StatisticDataType__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < statistics_msgs__msg__StatisticDataType__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< statistics_msgs__msg__StatisticDataType__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (statistics_msgs__msg__StatisticDataType__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< statistics_msgs__msg__StatisticDataType__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (statistics_msgs__msg__StatisticDataType__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataType__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataType__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (statistics_msgs__msg__StatisticDataType__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Bool { pub data : bool , } # [test] fn bindgen_test_layout_std_msgs__msg__Bool () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Bool > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Bool > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Bool))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Bool > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Bool))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Bool) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Bool__Sequence { pub data : * mut std_msgs__msg__Bool , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Bool__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Bool__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Bool__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Bool__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Bool__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Bool__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Bool__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Bool__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Bool__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Byte { pub data : u8 , } # [test] fn bindgen_test_layout_std_msgs__msg__Byte () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Byte > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Byte > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Byte))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Byte > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Byte))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Byte) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Byte__Sequence { pub data : * mut std_msgs__msg__Byte , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Byte__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Byte__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Byte__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Byte__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Byte__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Byte__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Byte__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Byte__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Byte__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__MultiArrayDimension { pub label : rosidl_runtime_c__String , pub size : u32 , pub stride : u32 , } # [test] fn bindgen_test_layout_std_msgs__msg__MultiArrayDimension () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__MultiArrayDimension > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__MultiArrayDimension > () , 32usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__MultiArrayDimension))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__MultiArrayDimension > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__MultiArrayDimension))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . label) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension) , "::" , stringify ! (label))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stride) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension) , "::" , stringify ! (stride))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__MultiArrayDimension__Sequence { pub data : * mut std_msgs__msg__MultiArrayDimension , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__MultiArrayDimension__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__MultiArrayDimension__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__MultiArrayDimension__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__MultiArrayDimension__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__MultiArrayDimension__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__MultiArrayDimension__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayDimension__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__MultiArrayLayout { pub dim : std_msgs__msg__MultiArrayDimension__Sequence , pub data_offset : u32 , } # [test] fn bindgen_test_layout_std_msgs__msg__MultiArrayLayout () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__MultiArrayLayout > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__MultiArrayLayout > () , 32usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__MultiArrayLayout))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__MultiArrayLayout > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__MultiArrayLayout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . dim) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayLayout) , "::" , stringify ! (dim))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data_offset) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayLayout) , "::" , stringify ! (data_offset))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__MultiArrayLayout__Sequence { pub data : * mut std_msgs__msg__MultiArrayLayout , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__MultiArrayLayout__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__MultiArrayLayout__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__MultiArrayLayout__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__MultiArrayLayout__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__MultiArrayLayout__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__MultiArrayLayout__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayLayout__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayLayout__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__MultiArrayLayout__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__ByteMultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__octet__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__ByteMultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__ByteMultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__ByteMultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__ByteMultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__ByteMultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__ByteMultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ByteMultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ByteMultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__ByteMultiArray__Sequence { pub data : * mut std_msgs__msg__ByteMultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__ByteMultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__ByteMultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__ByteMultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__ByteMultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__ByteMultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__ByteMultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ByteMultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ByteMultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ByteMultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Char { pub data : u8 , } # [test] fn bindgen_test_layout_std_msgs__msg__Char () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Char > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Char > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Char))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Char > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Char))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Char) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Char__Sequence { pub data : * mut std_msgs__msg__Char , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Char__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Char__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Char__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Char__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Char__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Char__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Char__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Char__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Char__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__ColorRGBA { pub r : f32 , pub g : f32 , pub b : f32 , pub a : f32 , } # [test] fn bindgen_test_layout_std_msgs__msg__ColorRGBA () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__ColorRGBA > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__ColorRGBA > () , 16usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__ColorRGBA))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__ColorRGBA > () , 4usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__ColorRGBA))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . r) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA) , "::" , stringify ! (r))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . g) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA) , "::" , stringify ! (g))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . b) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA) , "::" , stringify ! (b))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . a) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA) , "::" , stringify ! (a))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__ColorRGBA__Sequence { pub data : * mut std_msgs__msg__ColorRGBA , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__ColorRGBA__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__ColorRGBA__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__ColorRGBA__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__ColorRGBA__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__ColorRGBA__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__ColorRGBA__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__ColorRGBA__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Empty { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_std_msgs__msg__Empty () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Empty > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Empty > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Empty))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Empty > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Empty))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Empty) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Empty__Sequence { pub data : * mut std_msgs__msg__Empty , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Empty__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Empty__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Empty__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Empty__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Empty__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Empty__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Empty__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Empty__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Empty__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float32 { pub data : f32 , } # [test] fn bindgen_test_layout_std_msgs__msg__Float32 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float32 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float32 > () , 4usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float32))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float32 > () , 4usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float32))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float32__Sequence { pub data : * mut std_msgs__msg__Float32 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Float32__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float32__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float32__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float32__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float32__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float32__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Float32MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__float__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Float32MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float32MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float32MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float32MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float32MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float32MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float32MultiArray__Sequence { pub data : * mut std_msgs__msg__Float32MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Float32MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float32MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float32MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float32MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float32MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float32MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float32MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float64 { pub data : f64 , } # [test] fn bindgen_test_layout_std_msgs__msg__Float64 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float64 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float64 > () , 8usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float64))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float64 > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float64))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float64__Sequence { pub data : * mut std_msgs__msg__Float64 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Float64__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float64__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float64__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float64__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float64__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float64__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Float64MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__double__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Float64MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float64MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float64MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float64MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float64MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float64MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Float64MultiArray__Sequence { pub data : * mut std_msgs__msg__Float64MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Float64MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Float64MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Float64MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Float64MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Float64MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Float64MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Float64MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int16 { pub data : i16 , } # [test] fn bindgen_test_layout_std_msgs__msg__Int16 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int16 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int16 > () , 2usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int16))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int16 > () , 2usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int16))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int16__Sequence { pub data : * mut std_msgs__msg__Int16 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int16__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int16__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int16__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int16__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int16__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int16__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Int16MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__int16__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Int16MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int16MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int16MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int16MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int16MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int16MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int16MultiArray__Sequence { pub data : * mut std_msgs__msg__Int16MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int16MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int16MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int16MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int16MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int16MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int16MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int16MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int32 { pub data : i32 , } # [test] fn bindgen_test_layout_std_msgs__msg__Int32 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int32 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int32 > () , 4usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int32))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int32 > () , 4usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int32))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int32__Sequence { pub data : * mut std_msgs__msg__Int32 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int32__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int32__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int32__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int32__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int32__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int32__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Int32MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__int32__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Int32MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int32MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int32MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int32MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int32MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int32MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int32MultiArray__Sequence { pub data : * mut std_msgs__msg__Int32MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int32MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int32MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int32MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int32MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int32MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int32MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int32MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int64 { pub data : i64 , } # [test] fn bindgen_test_layout_std_msgs__msg__Int64 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int64 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int64 > () , 8usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int64))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int64 > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int64))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int64__Sequence { pub data : * mut std_msgs__msg__Int64 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int64__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int64__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int64__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int64__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int64__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int64__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Int64MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__int64__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Int64MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int64MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int64MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int64MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int64MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int64MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int64MultiArray__Sequence { pub data : * mut std_msgs__msg__Int64MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int64MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int64MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int64MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int64MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int64MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int64MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int64MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int8 { pub data : i8 , } # [test] fn bindgen_test_layout_std_msgs__msg__Int8 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int8 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int8 > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int8))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int8 > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int8))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int8__Sequence { pub data : * mut std_msgs__msg__Int8 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int8__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int8__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int8__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int8__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int8__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int8__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__Int8MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__int8__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__Int8MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int8MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int8MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int8MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int8MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int8MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__Int8MultiArray__Sequence { pub data : * mut std_msgs__msg__Int8MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__Int8MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__Int8MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__Int8MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__Int8MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__Int8MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__Int8MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__Int8MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__String { pub data : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_std_msgs__msg__String () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__String > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__String > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__String))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__String > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__String))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__String) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__String__Sequence { pub data : * mut std_msgs__msg__String , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__String__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__String__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__String__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__String__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__String__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__String__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__String__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__String__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__String__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt16 { pub data : u16 , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt16 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt16 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt16 > () , 2usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt16))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt16 > () , 2usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt16))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt16__Sequence { pub data : * mut std_msgs__msg__UInt16 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt16__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt16__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt16__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt16__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt16__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt16__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__UInt16MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__uint16__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt16MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt16MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt16MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt16MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt16MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt16MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt16MultiArray__Sequence { pub data : * mut std_msgs__msg__UInt16MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt16MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt16MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt16MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt16MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt16MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt16MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt16MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt32 { pub data : u32 , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt32 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt32 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt32 > () , 4usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt32))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt32 > () , 4usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt32))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt32__Sequence { pub data : * mut std_msgs__msg__UInt32 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt32__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt32__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt32__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt32__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt32__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt32__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__UInt32MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__uint32__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt32MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt32MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt32MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt32MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt32MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt32MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt32MultiArray__Sequence { pub data : * mut std_msgs__msg__UInt32MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt32MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt32MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt32MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt32MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt32MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt32MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt32MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt64 { pub data : u64 , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt64 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt64 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt64 > () , 8usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt64))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt64 > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt64))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt64__Sequence { pub data : * mut std_msgs__msg__UInt64 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt64__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt64__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt64__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt64__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt64__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt64__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__UInt64MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__uint64__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt64MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt64MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt64MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt64MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt64MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt64MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt64MultiArray__Sequence { pub data : * mut std_msgs__msg__UInt64MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt64MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt64MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt64MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt64MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt64MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt64MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt64MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt8 { pub data : u8 , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt8 () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt8 > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt8 > () , 1usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt8))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt8 > () , 1usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt8))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt8__Sequence { pub data : * mut std_msgs__msg__UInt8 , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt8__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt8__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt8__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt8__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt8__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt8__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct std_msgs__msg__UInt8MultiArray { pub layout : std_msgs__msg__MultiArrayLayout , pub data : rosidl_runtime_c__uint8__Sequence , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt8MultiArray () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt8MultiArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt8MultiArray > () , 56usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt8MultiArray))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt8MultiArray > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt8MultiArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . layout) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8MultiArray) , "::" , stringify ! (layout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8MultiArray) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct std_msgs__msg__UInt8MultiArray__Sequence { pub data : * mut std_msgs__msg__UInt8MultiArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_std_msgs__msg__UInt8MultiArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < std_msgs__msg__UInt8MultiArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< std_msgs__msg__UInt8MultiArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (std_msgs__msg__UInt8MultiArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< std_msgs__msg__UInt8MultiArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (std_msgs__msg__UInt8MultiArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8MultiArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8MultiArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (std_msgs__msg__UInt8MultiArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct stereo_msgs__msg__DisparityImage { pub header : std_msgs__msg__Header , pub image : sensor_msgs__msg__Image , pub f : f32 , pub t : f32 , pub valid_window : sensor_msgs__msg__RegionOfInterest , pub min_disparity : f32 , pub max_disparity : f32 , pub delta_d : f32 , } # [test] fn bindgen_test_layout_stereo_msgs__msg__DisparityImage () { const UNINIT : :: std :: mem :: MaybeUninit < stereo_msgs__msg__DisparityImage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< stereo_msgs__msg__DisparityImage > () , 168usize , concat ! ("Size of: " , stringify ! (stereo_msgs__msg__DisparityImage))) ; assert_eq ! (:: std :: mem :: align_of ::< stereo_msgs__msg__DisparityImage > () , 8usize , concat ! ("Alignment of " , stringify ! (stereo_msgs__msg__DisparityImage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . image) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (image))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . f) as usize - ptr as usize } , 128usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (f))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . t) as usize - ptr as usize } , 132usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (t))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . valid_window) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (valid_window))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . min_disparity) as usize - ptr as usize } , 156usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (min_disparity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . max_disparity) as usize - ptr as usize } , 160usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (max_disparity))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . delta_d) as usize - ptr as usize } , 164usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage) , "::" , stringify ! (delta_d))) ; } # [repr (C)] # [derive (Debug)] pub struct stereo_msgs__msg__DisparityImage__Sequence { pub data : * mut stereo_msgs__msg__DisparityImage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_stereo_msgs__msg__DisparityImage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < stereo_msgs__msg__DisparityImage__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< stereo_msgs__msg__DisparityImage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (stereo_msgs__msg__DisparityImage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< stereo_msgs__msg__DisparityImage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (stereo_msgs__msg__DisparityImage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (stereo_msgs__msg__DisparityImage__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_Goal { pub order : i32 , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Goal () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Goal > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Goal > () , 4usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Goal))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Goal > () , 4usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Goal))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . order) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Goal) , "::" , stringify ! (order))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_Goal__Sequence { pub data : * mut test_msgs__action__Fibonacci_Goal , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Goal__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Goal__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Goal__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Goal__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Goal__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Goal__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Goal__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Goal__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Goal__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__action__Fibonacci_Result { pub sequence : rosidl_runtime_c__int32__Sequence , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Result () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Result > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Result > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Result))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Result > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Result))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . sequence) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Result) , "::" , stringify ! (sequence))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_Result__Sequence { pub data : * mut test_msgs__action__Fibonacci_Result , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Result__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Result__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Result__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Result__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Result__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Result__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Result__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Result__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Result__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__action__Fibonacci_Feedback { pub sequence : rosidl_runtime_c__int32__Sequence , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Feedback () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Feedback > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Feedback > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Feedback))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Feedback > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Feedback))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . sequence) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Feedback) , "::" , stringify ! (sequence))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_Feedback__Sequence { pub data : * mut test_msgs__action__Fibonacci_Feedback , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_Feedback__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_Feedback__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_Feedback__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_Feedback__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_Feedback__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_Feedback__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Feedback__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Feedback__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_Feedback__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_SendGoal_Request { pub goal_id : unique_identifier_msgs__msg__UUID , pub goal : test_msgs__action__Fibonacci_Goal , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_SendGoal_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_SendGoal_Request > () , 20usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_SendGoal_Request > () , 4usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request) , "::" , stringify ! (goal))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_SendGoal_Request__Sequence { pub data : * mut test_msgs__action__Fibonacci_SendGoal_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_SendGoal_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_SendGoal_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_SendGoal_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_SendGoal_Response { pub accepted : bool , pub stamp : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_SendGoal_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_SendGoal_Response > () , 12usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_SendGoal_Response > () , 4usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accepted) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response) , "::" , stringify ! (accepted))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response) , "::" , stringify ! (stamp))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_SendGoal_Response__Sequence { pub data : * mut test_msgs__action__Fibonacci_SendGoal_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_SendGoal_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_SendGoal_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_SendGoal_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_SendGoal_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_SendGoal_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_GetResult_Request { pub goal_id : unique_identifier_msgs__msg__UUID , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_GetResult_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_GetResult_Request > () , 16usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_GetResult_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request) , "::" , stringify ! (goal_id))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_GetResult_Request__Sequence { pub data : * mut test_msgs__action__Fibonacci_GetResult_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_GetResult_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_GetResult_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_GetResult_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__action__Fibonacci_GetResult_Response { pub status : i8 , pub result : test_msgs__action__Fibonacci_Result , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_GetResult_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_GetResult_Response > () , 32usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_GetResult_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response) , "::" , stringify ! (status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_GetResult_Response__Sequence { pub data : * mut test_msgs__action__Fibonacci_GetResult_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_GetResult_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_GetResult_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_GetResult_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_GetResult_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_GetResult_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__action__Fibonacci_FeedbackMessage { pub goal_id : unique_identifier_msgs__msg__UUID , pub feedback : test_msgs__action__Fibonacci_Feedback , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_FeedbackMessage () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_FeedbackMessage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_FeedbackMessage > () , 40usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_FeedbackMessage > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . feedback) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage) , "::" , stringify ! (feedback))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__Fibonacci_FeedbackMessage__Sequence { pub data : * mut test_msgs__action__Fibonacci_FeedbackMessage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__Fibonacci_FeedbackMessage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__Fibonacci_FeedbackMessage__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__Fibonacci_FeedbackMessage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__Fibonacci_FeedbackMessage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__Fibonacci_FeedbackMessage__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Builtins { pub duration_value : builtin_interfaces__msg__Duration , pub time_value : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__msg__Builtins () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Builtins > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Builtins > () , 16usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Builtins))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Builtins > () , 4usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Builtins))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . duration_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Builtins) , "::" , stringify ! (duration_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Builtins) , "::" , stringify ! (time_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Builtins__Sequence { pub data : * mut test_msgs__msg__Builtins , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Builtins__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Builtins__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Builtins__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Builtins__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Builtins__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Builtins__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Builtins__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Builtins__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Builtins__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__BasicTypes { pub bool_value : bool , pub byte_value : u8 , pub char_value : u8 , pub float32_value : f32 , pub float64_value : f64 , pub int8_value : i8 , pub uint8_value : u8 , pub int16_value : i16 , pub uint16_value : u16 , pub int32_value : i32 , pub uint32_value : u32 , pub int64_value : i64 , pub uint64_value : u64 , } # [test] fn bindgen_test_layout_test_msgs__msg__BasicTypes () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BasicTypes > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BasicTypes > () , 48usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BasicTypes))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BasicTypes > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BasicTypes))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (bool_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_value) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (byte_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_value) as usize - ptr as usize } , 2usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (char_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_value) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (float32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (float64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_value) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (int8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_value) as usize - ptr as usize } , 17usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (uint8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_value) as usize - ptr as usize } , 18usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (int16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_value) as usize - ptr as usize } , 20usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (uint16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (int32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_value) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (uint32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_value) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (int64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_value) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes) , "::" , stringify ! (uint64_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__BasicTypes__Sequence { pub data : * mut test_msgs__msg__BasicTypes , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__BasicTypes__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BasicTypes__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BasicTypes__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BasicTypes__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BasicTypes__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BasicTypes__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BasicTypes__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Goal { pub nested_field_no_pkg : test_msgs__msg__Builtins , pub nested_field : test_msgs__msg__BasicTypes , pub nested_different_pkg : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Goal () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Goal > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Goal > () , 72usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Goal))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Goal > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Goal))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field_no_pkg) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal) , "::" , stringify ! (nested_field_no_pkg))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal) , "::" , stringify ! (nested_field))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_different_pkg) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal) , "::" , stringify ! (nested_different_pkg))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Goal__Sequence { pub data : * mut test_msgs__action__NestedMessage_Goal , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Goal__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Goal__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Goal__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Goal__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Goal__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Goal__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Goal__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Result { pub nested_field_no_pkg : test_msgs__msg__Builtins , pub nested_field : test_msgs__msg__BasicTypes , pub nested_different_pkg : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Result () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Result > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Result > () , 72usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Result))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Result > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Result))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field_no_pkg) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result) , "::" , stringify ! (nested_field_no_pkg))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result) , "::" , stringify ! (nested_field))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_different_pkg) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result) , "::" , stringify ! (nested_different_pkg))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Result__Sequence { pub data : * mut test_msgs__action__NestedMessage_Result , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Result__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Result__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Result__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Result__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Result__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Result__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Result__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Feedback { pub nested_field_no_pkg : test_msgs__msg__Builtins , pub nested_field : test_msgs__msg__BasicTypes , pub nested_different_pkg : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Feedback () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Feedback > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Feedback > () , 72usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Feedback))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Feedback > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Feedback))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field_no_pkg) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback) , "::" , stringify ! (nested_field_no_pkg))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_field) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback) , "::" , stringify ! (nested_field))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . nested_different_pkg) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback) , "::" , stringify ! (nested_different_pkg))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_Feedback__Sequence { pub data : * mut test_msgs__action__NestedMessage_Feedback , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_Feedback__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_Feedback__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_Feedback__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_Feedback__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_Feedback__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_Feedback__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_Feedback__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_SendGoal_Request { pub goal_id : unique_identifier_msgs__msg__UUID , pub goal : test_msgs__action__NestedMessage_Goal , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_SendGoal_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_SendGoal_Request > () , 88usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_SendGoal_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request) , "::" , stringify ! (goal))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_SendGoal_Request__Sequence { pub data : * mut test_msgs__action__NestedMessage_SendGoal_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_SendGoal_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_SendGoal_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_SendGoal_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_SendGoal_Response { pub accepted : bool , pub stamp : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_SendGoal_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_SendGoal_Response > () , 12usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_SendGoal_Response > () , 4usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accepted) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response) , "::" , stringify ! (accepted))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response) , "::" , stringify ! (stamp))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_SendGoal_Response__Sequence { pub data : * mut test_msgs__action__NestedMessage_SendGoal_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_SendGoal_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_SendGoal_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_SendGoal_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_SendGoal_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_SendGoal_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_GetResult_Request { pub goal_id : unique_identifier_msgs__msg__UUID , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_GetResult_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_GetResult_Request > () , 16usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_GetResult_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request) , "::" , stringify ! (goal_id))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_GetResult_Request__Sequence { pub data : * mut test_msgs__action__NestedMessage_GetResult_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_GetResult_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_GetResult_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_GetResult_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_GetResult_Response { pub status : i8 , pub result : test_msgs__action__NestedMessage_Result , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_GetResult_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_GetResult_Response > () , 80usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_GetResult_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response) , "::" , stringify ! (status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_GetResult_Response__Sequence { pub data : * mut test_msgs__action__NestedMessage_GetResult_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_GetResult_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_GetResult_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_GetResult_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_GetResult_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_GetResult_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_FeedbackMessage { pub goal_id : unique_identifier_msgs__msg__UUID , pub feedback : test_msgs__action__NestedMessage_Feedback , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_FeedbackMessage () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_FeedbackMessage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_FeedbackMessage > () , 88usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_FeedbackMessage > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . feedback) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage) , "::" , stringify ! (feedback))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__action__NestedMessage_FeedbackMessage__Sequence { pub data : * mut test_msgs__action__NestedMessage_FeedbackMessage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__action__NestedMessage_FeedbackMessage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__action__NestedMessage_FeedbackMessage__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__action__NestedMessage_FeedbackMessage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__action__NestedMessage_FeedbackMessage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__action__NestedMessage_FeedbackMessage__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__Constants__BOOL_CONST : bool = true ; pub const test_msgs__msg__Constants__BYTE_CONST : _bindgen_ty_147 = _bindgen_ty_147 :: test_msgs__msg__Constants__BYTE_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_147 { test_msgs__msg__Constants__BYTE_CONST = 50 , } pub const test_msgs__msg__Constants__CHAR_CONST : _bindgen_ty_148 = _bindgen_ty_148 :: test_msgs__msg__Constants__CHAR_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_148 { test_msgs__msg__Constants__CHAR_CONST = 100 , } pub const test_msgs__msg__Constants__FLOAT32_CONST : f32 = 1.125 ; pub const test_msgs__msg__Constants__FLOAT64_CONST : f64 = 1.125 ; pub const test_msgs__msg__Constants__INT8_CONST : _bindgen_ty_149 = _bindgen_ty_149 :: test_msgs__msg__Constants__INT8_CONST ; # [repr (i32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_149 { test_msgs__msg__Constants__INT8_CONST = - 50 , } pub const test_msgs__msg__Constants__UINT8_CONST : _bindgen_ty_150 = _bindgen_ty_150 :: test_msgs__msg__Constants__UINT8_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_150 { test_msgs__msg__Constants__UINT8_CONST = 200 , } pub const test_msgs__msg__Constants__INT16_CONST : _bindgen_ty_151 = _bindgen_ty_151 :: test_msgs__msg__Constants__INT16_CONST ; # [repr (i32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_151 { test_msgs__msg__Constants__INT16_CONST = - 1000 , } pub const test_msgs__msg__Constants__UINT16_CONST : _bindgen_ty_152 = _bindgen_ty_152 :: test_msgs__msg__Constants__UINT16_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_152 { test_msgs__msg__Constants__UINT16_CONST = 2000 , } pub const test_msgs__msg__Constants__INT32_CONST : _bindgen_ty_153 = _bindgen_ty_153 :: test_msgs__msg__Constants__INT32_CONST ; # [repr (i32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_153 { test_msgs__msg__Constants__INT32_CONST = - 30000 , } pub const test_msgs__msg__Constants__UINT32_CONST : _bindgen_ty_154 = _bindgen_ty_154 :: test_msgs__msg__Constants__UINT32_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_154 { test_msgs__msg__Constants__UINT32_CONST = 60000 , } pub const test_msgs__msg__Constants__INT64_CONST : _bindgen_ty_155 = _bindgen_ty_155 :: test_msgs__msg__Constants__INT64_CONST ; # [repr (i32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_155 { test_msgs__msg__Constants__INT64_CONST = - 40000000 , } pub const test_msgs__msg__Constants__UINT64_CONST : _bindgen_ty_156 = _bindgen_ty_156 :: test_msgs__msg__Constants__UINT64_CONST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_156 { test_msgs__msg__Constants__UINT64_CONST = 50000000 , } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Constants { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_test_msgs__msg__Constants () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Constants > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Constants > () , 1usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Constants))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Constants > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Constants))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Constants) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Constants__Sequence { pub data : * mut test_msgs__msg__Constants , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Constants__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Constants__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Constants__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Constants__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Constants__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Constants__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Constants__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Constants__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Constants__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Defaults { pub bool_value : bool , pub byte_value : u8 , pub char_value : u8 , pub float32_value : f32 , pub float64_value : f64 , pub int8_value : i8 , pub uint8_value : u8 , pub int16_value : i16 , pub uint16_value : u16 , pub int32_value : i32 , pub uint32_value : u32 , pub int64_value : i64 , pub uint64_value : u64 , } # [test] fn bindgen_test_layout_test_msgs__msg__Defaults () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Defaults > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Defaults > () , 48usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Defaults))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Defaults > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Defaults))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (bool_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_value) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (byte_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_value) as usize - ptr as usize } , 2usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (char_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_value) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (float32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (float64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_value) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (int8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_value) as usize - ptr as usize } , 17usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (uint8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_value) as usize - ptr as usize } , 18usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (int16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_value) as usize - ptr as usize } , 20usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (uint16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (int32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_value) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (uint32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_value) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (int64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_value) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults) , "::" , stringify ! (uint64_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Defaults__Sequence { pub data : * mut test_msgs__msg__Defaults , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Defaults__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Defaults__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Defaults__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Defaults__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Defaults__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Defaults__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Defaults__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__msg__Arrays { pub bool_values : [bool ; 3usize] , pub byte_values : [u8 ; 3usize] , pub char_values : [u8 ; 3usize] , pub float32_values : [f32 ; 3usize] , pub float64_values : [f64 ; 3usize] , pub int8_values : [i8 ; 3usize] , pub uint8_values : [u8 ; 3usize] , pub int16_values : [i16 ; 3usize] , pub uint16_values : [u16 ; 3usize] , pub int32_values : [i32 ; 3usize] , pub uint32_values : [u32 ; 3usize] , pub int64_values : [i64 ; 3usize] , pub uint64_values : [u64 ; 3usize] , pub string_values : [rosidl_runtime_c__String ; 3usize] , pub basic_types_values : [test_msgs__msg__BasicTypes ; 3usize] , pub constants_values : [test_msgs__msg__Constants ; 3usize] , pub defaults_values : [test_msgs__msg__Defaults ; 3usize] , pub bool_values_default : [bool ; 3usize] , pub byte_values_default : [u8 ; 3usize] , pub char_values_default : [u8 ; 3usize] , pub float32_values_default : [f32 ; 3usize] , pub float64_values_default : [f64 ; 3usize] , pub int8_values_default : [i8 ; 3usize] , pub uint8_values_default : [u8 ; 3usize] , pub int16_values_default : [i16 ; 3usize] , pub uint16_values_default : [u16 ; 3usize] , pub int32_values_default : [i32 ; 3usize] , pub uint32_values_default : [u32 ; 3usize] , pub int64_values_default : [i64 ; 3usize] , pub uint64_values_default : [u64 ; 3usize] , pub string_values_default : [rosidl_runtime_c__String ; 3usize] , pub alignment_check : i32 , } # [test] fn bindgen_test_layout_test_msgs__msg__Arrays () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Arrays > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Arrays > () , 736usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Arrays))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Arrays > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Arrays))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 3usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 6usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 51usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 54usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 68usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (string_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 368usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 512usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 515usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 518usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 524usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 536usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 560usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 563usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 566usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 572usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 580usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 592usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 608usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 632usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values_default) as usize - ptr as usize } , 656usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (string_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . alignment_check) as usize - ptr as usize } , 728usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays) , "::" , stringify ! (alignment_check))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Arrays__Sequence { pub data : * mut test_msgs__msg__Arrays , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Arrays__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Arrays__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Arrays__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Arrays__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Arrays__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Arrays__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Arrays__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE : _bindgen_ty_157 = _bindgen_ty_157 :: test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_157 { test_msgs__msg__BoundedPlainSequences__bool_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE : _bindgen_ty_158 = _bindgen_ty_158 :: test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_158 { test_msgs__msg__BoundedPlainSequences__byte_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE : _bindgen_ty_159 = _bindgen_ty_159 :: test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_159 { test_msgs__msg__BoundedPlainSequences__char_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE : _bindgen_ty_160 = _bindgen_ty_160 :: test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_160 { test_msgs__msg__BoundedPlainSequences__float32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE : _bindgen_ty_161 = _bindgen_ty_161 :: test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_161 { test_msgs__msg__BoundedPlainSequences__float64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE : _bindgen_ty_162 = _bindgen_ty_162 :: test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_162 { test_msgs__msg__BoundedPlainSequences__int8_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE : _bindgen_ty_163 = _bindgen_ty_163 :: test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_163 { test_msgs__msg__BoundedPlainSequences__uint8_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE : _bindgen_ty_164 = _bindgen_ty_164 :: test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_164 { test_msgs__msg__BoundedPlainSequences__int16_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE : _bindgen_ty_165 = _bindgen_ty_165 :: test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_165 { test_msgs__msg__BoundedPlainSequences__uint16_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE : _bindgen_ty_166 = _bindgen_ty_166 :: test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_166 { test_msgs__msg__BoundedPlainSequences__int32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE : _bindgen_ty_167 = _bindgen_ty_167 :: test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_167 { test_msgs__msg__BoundedPlainSequences__uint32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE : _bindgen_ty_168 = _bindgen_ty_168 :: test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_168 { test_msgs__msg__BoundedPlainSequences__int64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE : _bindgen_ty_169 = _bindgen_ty_169 :: test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_169 { test_msgs__msg__BoundedPlainSequences__uint64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE : _bindgen_ty_170 = _bindgen_ty_170 :: test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_170 { test_msgs__msg__BoundedPlainSequences__basic_types_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE : _bindgen_ty_171 = _bindgen_ty_171 :: test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_171 { test_msgs__msg__BoundedPlainSequences__constants_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE : _bindgen_ty_172 = _bindgen_ty_172 :: test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_172 { test_msgs__msg__BoundedPlainSequences__defaults_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE : _bindgen_ty_173 = _bindgen_ty_173 :: test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_173 { test_msgs__msg__BoundedPlainSequences__bool_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE : _bindgen_ty_174 = _bindgen_ty_174 :: test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_174 { test_msgs__msg__BoundedPlainSequences__byte_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE : _bindgen_ty_175 = _bindgen_ty_175 :: test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_175 { test_msgs__msg__BoundedPlainSequences__char_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE : _bindgen_ty_176 = _bindgen_ty_176 :: test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_176 { test_msgs__msg__BoundedPlainSequences__float32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE : _bindgen_ty_177 = _bindgen_ty_177 :: test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_177 { test_msgs__msg__BoundedPlainSequences__float64_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE : _bindgen_ty_178 = _bindgen_ty_178 :: test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_178 { test_msgs__msg__BoundedPlainSequences__int8_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE : _bindgen_ty_179 = _bindgen_ty_179 :: test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_179 { test_msgs__msg__BoundedPlainSequences__uint8_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE : _bindgen_ty_180 = _bindgen_ty_180 :: test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_180 { test_msgs__msg__BoundedPlainSequences__int16_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE : _bindgen_ty_181 = _bindgen_ty_181 :: test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_181 { test_msgs__msg__BoundedPlainSequences__uint16_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE : _bindgen_ty_182 = _bindgen_ty_182 :: test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_182 { test_msgs__msg__BoundedPlainSequences__int32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE : _bindgen_ty_183 = _bindgen_ty_183 :: test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_183 { test_msgs__msg__BoundedPlainSequences__uint32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE : _bindgen_ty_184 = _bindgen_ty_184 :: test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_184 { test_msgs__msg__BoundedPlainSequences__int64_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE : _bindgen_ty_185 = _bindgen_ty_185 :: test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_185 { test_msgs__msg__BoundedPlainSequences__uint64_values_default__MAX_SIZE = 3 , } # [repr (C)] pub struct test_msgs__msg__BoundedPlainSequences { pub bool_values : rosidl_runtime_c__boolean__Sequence , pub byte_values : rosidl_runtime_c__octet__Sequence , pub char_values : rosidl_runtime_c__uint8__Sequence , pub float32_values : rosidl_runtime_c__float__Sequence , pub float64_values : rosidl_runtime_c__double__Sequence , pub int8_values : rosidl_runtime_c__int8__Sequence , pub uint8_values : rosidl_runtime_c__uint8__Sequence , pub int16_values : rosidl_runtime_c__int16__Sequence , pub uint16_values : rosidl_runtime_c__uint16__Sequence , pub int32_values : rosidl_runtime_c__int32__Sequence , pub uint32_values : rosidl_runtime_c__uint32__Sequence , pub int64_values : rosidl_runtime_c__int64__Sequence , pub uint64_values : rosidl_runtime_c__uint64__Sequence , pub basic_types_values : test_msgs__msg__BasicTypes__Sequence , pub constants_values : test_msgs__msg__Constants__Sequence , pub defaults_values : test_msgs__msg__Defaults__Sequence , pub bool_values_default : rosidl_runtime_c__boolean__Sequence , pub byte_values_default : rosidl_runtime_c__octet__Sequence , pub char_values_default : rosidl_runtime_c__uint8__Sequence , pub float32_values_default : rosidl_runtime_c__float__Sequence , pub float64_values_default : rosidl_runtime_c__double__Sequence , pub int8_values_default : rosidl_runtime_c__int8__Sequence , pub uint8_values_default : rosidl_runtime_c__uint8__Sequence , pub int16_values_default : rosidl_runtime_c__int16__Sequence , pub uint16_values_default : rosidl_runtime_c__uint16__Sequence , pub int32_values_default : rosidl_runtime_c__int32__Sequence , pub uint32_values_default : rosidl_runtime_c__uint32__Sequence , pub int64_values_default : rosidl_runtime_c__int64__Sequence , pub uint64_values_default : rosidl_runtime_c__uint64__Sequence , pub alignment_check : i32 , } # [test] fn bindgen_test_layout_test_msgs__msg__BoundedPlainSequences () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BoundedPlainSequences > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BoundedPlainSequences > () , 704usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BoundedPlainSequences))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BoundedPlainSequences > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BoundedPlainSequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 192usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 240usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 264usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 288usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 312usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 336usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 384usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 408usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 432usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 456usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 480usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 504usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 528usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 552usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 576usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 600usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 624usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 648usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 672usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . alignment_check) as usize - ptr as usize } , 696usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences) , "::" , stringify ! (alignment_check))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__BoundedPlainSequences__Sequence { pub data : * mut test_msgs__msg__BoundedPlainSequences , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__BoundedPlainSequences__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BoundedPlainSequences__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BoundedPlainSequences__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BoundedPlainSequences__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BoundedPlainSequences__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BoundedPlainSequences__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedPlainSequences__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE : _bindgen_ty_186 = _bindgen_ty_186 :: test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_186 { test_msgs__msg__BoundedSequences__bool_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE : _bindgen_ty_187 = _bindgen_ty_187 :: test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_187 { test_msgs__msg__BoundedSequences__byte_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__char_values__MAX_SIZE : _bindgen_ty_188 = _bindgen_ty_188 :: test_msgs__msg__BoundedSequences__char_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_188 { test_msgs__msg__BoundedSequences__char_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE : _bindgen_ty_189 = _bindgen_ty_189 :: test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_189 { test_msgs__msg__BoundedSequences__float32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE : _bindgen_ty_190 = _bindgen_ty_190 :: test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_190 { test_msgs__msg__BoundedSequences__float64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE : _bindgen_ty_191 = _bindgen_ty_191 :: test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_191 { test_msgs__msg__BoundedSequences__int8_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE : _bindgen_ty_192 = _bindgen_ty_192 :: test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_192 { test_msgs__msg__BoundedSequences__uint8_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE : _bindgen_ty_193 = _bindgen_ty_193 :: test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_193 { test_msgs__msg__BoundedSequences__int16_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE : _bindgen_ty_194 = _bindgen_ty_194 :: test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_194 { test_msgs__msg__BoundedSequences__uint16_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE : _bindgen_ty_195 = _bindgen_ty_195 :: test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_195 { test_msgs__msg__BoundedSequences__int32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE : _bindgen_ty_196 = _bindgen_ty_196 :: test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_196 { test_msgs__msg__BoundedSequences__uint32_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE : _bindgen_ty_197 = _bindgen_ty_197 :: test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_197 { test_msgs__msg__BoundedSequences__int64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE : _bindgen_ty_198 = _bindgen_ty_198 :: test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_198 { test_msgs__msg__BoundedSequences__uint64_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__string_values__MAX_SIZE : _bindgen_ty_199 = _bindgen_ty_199 :: test_msgs__msg__BoundedSequences__string_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_199 { test_msgs__msg__BoundedSequences__string_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE : _bindgen_ty_200 = _bindgen_ty_200 :: test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_200 { test_msgs__msg__BoundedSequences__basic_types_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE : _bindgen_ty_201 = _bindgen_ty_201 :: test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_201 { test_msgs__msg__BoundedSequences__constants_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE : _bindgen_ty_202 = _bindgen_ty_202 :: test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_202 { test_msgs__msg__BoundedSequences__defaults_values__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE : _bindgen_ty_203 = _bindgen_ty_203 :: test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_203 { test_msgs__msg__BoundedSequences__bool_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE : _bindgen_ty_204 = _bindgen_ty_204 :: test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_204 { test_msgs__msg__BoundedSequences__byte_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE : _bindgen_ty_205 = _bindgen_ty_205 :: test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_205 { test_msgs__msg__BoundedSequences__char_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE : _bindgen_ty_206 = _bindgen_ty_206 :: test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_206 { test_msgs__msg__BoundedSequences__float32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE : _bindgen_ty_207 = _bindgen_ty_207 :: test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_207 { test_msgs__msg__BoundedSequences__float64_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE : _bindgen_ty_208 = _bindgen_ty_208 :: test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_208 { test_msgs__msg__BoundedSequences__int8_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE : _bindgen_ty_209 = _bindgen_ty_209 :: test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_209 { test_msgs__msg__BoundedSequences__uint8_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE : _bindgen_ty_210 = _bindgen_ty_210 :: test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_210 { test_msgs__msg__BoundedSequences__int16_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE : _bindgen_ty_211 = _bindgen_ty_211 :: test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_211 { test_msgs__msg__BoundedSequences__uint16_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE : _bindgen_ty_212 = _bindgen_ty_212 :: test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_212 { test_msgs__msg__BoundedSequences__int32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE : _bindgen_ty_213 = _bindgen_ty_213 :: test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_213 { test_msgs__msg__BoundedSequences__uint32_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE : _bindgen_ty_214 = _bindgen_ty_214 :: test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_214 { test_msgs__msg__BoundedSequences__int64_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE : _bindgen_ty_215 = _bindgen_ty_215 :: test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_215 { test_msgs__msg__BoundedSequences__uint64_values_default__MAX_SIZE = 3 , } pub const test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE : _bindgen_ty_216 = _bindgen_ty_216 :: test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_216 { test_msgs__msg__BoundedSequences__string_values_default__MAX_SIZE = 3 , } # [repr (C)] pub struct test_msgs__msg__BoundedSequences { pub bool_values : rosidl_runtime_c__boolean__Sequence , pub byte_values : rosidl_runtime_c__octet__Sequence , pub char_values : rosidl_runtime_c__uint8__Sequence , pub float32_values : rosidl_runtime_c__float__Sequence , pub float64_values : rosidl_runtime_c__double__Sequence , pub int8_values : rosidl_runtime_c__int8__Sequence , pub uint8_values : rosidl_runtime_c__uint8__Sequence , pub int16_values : rosidl_runtime_c__int16__Sequence , pub uint16_values : rosidl_runtime_c__uint16__Sequence , pub int32_values : rosidl_runtime_c__int32__Sequence , pub uint32_values : rosidl_runtime_c__uint32__Sequence , pub int64_values : rosidl_runtime_c__int64__Sequence , pub uint64_values : rosidl_runtime_c__uint64__Sequence , pub string_values : rosidl_runtime_c__String__Sequence , pub basic_types_values : test_msgs__msg__BasicTypes__Sequence , pub constants_values : test_msgs__msg__Constants__Sequence , pub defaults_values : test_msgs__msg__Defaults__Sequence , pub bool_values_default : rosidl_runtime_c__boolean__Sequence , pub byte_values_default : rosidl_runtime_c__octet__Sequence , pub char_values_default : rosidl_runtime_c__uint8__Sequence , pub float32_values_default : rosidl_runtime_c__float__Sequence , pub float64_values_default : rosidl_runtime_c__double__Sequence , pub int8_values_default : rosidl_runtime_c__int8__Sequence , pub uint8_values_default : rosidl_runtime_c__uint8__Sequence , pub int16_values_default : rosidl_runtime_c__int16__Sequence , pub uint16_values_default : rosidl_runtime_c__uint16__Sequence , pub int32_values_default : rosidl_runtime_c__int32__Sequence , pub uint32_values_default : rosidl_runtime_c__uint32__Sequence , pub int64_values_default : rosidl_runtime_c__int64__Sequence , pub uint64_values_default : rosidl_runtime_c__uint64__Sequence , pub string_values_default : rosidl_runtime_c__String__Sequence , pub alignment_check : i32 , } # [test] fn bindgen_test_layout_test_msgs__msg__BoundedSequences () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BoundedSequences > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BoundedSequences > () , 752usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BoundedSequences))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BoundedSequences > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BoundedSequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 192usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 240usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 264usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 288usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values) as usize - ptr as usize } , 312usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (string_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 336usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 384usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 408usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 432usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 456usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 480usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 504usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 528usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 552usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 576usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 600usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 624usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 648usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 672usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 696usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values_default) as usize - ptr as usize } , 720usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (string_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . alignment_check) as usize - ptr as usize } , 744usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences) , "::" , stringify ! (alignment_check))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__BoundedSequences__Sequence { pub data : * mut test_msgs__msg__BoundedSequences , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__BoundedSequences__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__BoundedSequences__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__BoundedSequences__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__BoundedSequences__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__BoundedSequences__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__BoundedSequences__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__BoundedSequences__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Empty { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_test_msgs__msg__Empty () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Empty > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Empty > () , 1usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Empty))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Empty > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Empty))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Empty) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Empty__Sequence { pub data : * mut test_msgs__msg__Empty , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Empty__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Empty__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Empty__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Empty__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Empty__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Empty__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Empty__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Empty__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Empty__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__msg__UnboundedSequences { pub bool_values : rosidl_runtime_c__boolean__Sequence , pub byte_values : rosidl_runtime_c__octet__Sequence , pub char_values : rosidl_runtime_c__uint8__Sequence , pub float32_values : rosidl_runtime_c__float__Sequence , pub float64_values : rosidl_runtime_c__double__Sequence , pub int8_values : rosidl_runtime_c__int8__Sequence , pub uint8_values : rosidl_runtime_c__uint8__Sequence , pub int16_values : rosidl_runtime_c__int16__Sequence , pub uint16_values : rosidl_runtime_c__uint16__Sequence , pub int32_values : rosidl_runtime_c__int32__Sequence , pub uint32_values : rosidl_runtime_c__uint32__Sequence , pub int64_values : rosidl_runtime_c__int64__Sequence , pub uint64_values : rosidl_runtime_c__uint64__Sequence , pub string_values : rosidl_runtime_c__String__Sequence , pub basic_types_values : test_msgs__msg__BasicTypes__Sequence , pub constants_values : test_msgs__msg__Constants__Sequence , pub defaults_values : test_msgs__msg__Defaults__Sequence , pub bool_values_default : rosidl_runtime_c__boolean__Sequence , pub byte_values_default : rosidl_runtime_c__octet__Sequence , pub char_values_default : rosidl_runtime_c__uint8__Sequence , pub float32_values_default : rosidl_runtime_c__float__Sequence , pub float64_values_default : rosidl_runtime_c__double__Sequence , pub int8_values_default : rosidl_runtime_c__int8__Sequence , pub uint8_values_default : rosidl_runtime_c__uint8__Sequence , pub int16_values_default : rosidl_runtime_c__int16__Sequence , pub uint16_values_default : rosidl_runtime_c__uint16__Sequence , pub int32_values_default : rosidl_runtime_c__int32__Sequence , pub uint32_values_default : rosidl_runtime_c__uint32__Sequence , pub int64_values_default : rosidl_runtime_c__int64__Sequence , pub uint64_values_default : rosidl_runtime_c__uint64__Sequence , pub string_values_default : rosidl_runtime_c__String__Sequence , pub alignment_check : i32 , } # [test] fn bindgen_test_layout_test_msgs__msg__UnboundedSequences () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__UnboundedSequences > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__UnboundedSequences > () , 752usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__UnboundedSequences))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__UnboundedSequences > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__UnboundedSequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 192usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 240usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 264usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 288usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values) as usize - ptr as usize } , 312usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (string_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 336usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 384usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 408usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 432usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 456usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 480usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 504usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 528usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 552usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 576usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 600usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 624usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 648usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 672usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 696usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values_default) as usize - ptr as usize } , 720usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (string_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . alignment_check) as usize - ptr as usize } , 744usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences) , "::" , stringify ! (alignment_check))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__UnboundedSequences__Sequence { pub data : * mut test_msgs__msg__UnboundedSequences , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__UnboundedSequences__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__UnboundedSequences__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__UnboundedSequences__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__UnboundedSequences__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__UnboundedSequences__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__UnboundedSequences__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__UnboundedSequences__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE : _bindgen_ty_217 = _bindgen_ty_217 :: test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_217 { test_msgs__msg__MultiNested__bounded_sequence_of_arrays__MAX_SIZE = 3 , } pub const test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE : _bindgen_ty_218 = _bindgen_ty_218 :: test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_218 { test_msgs__msg__MultiNested__bounded_sequence_of_bounded_sequences__MAX_SIZE = 3 , } pub const test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE : _bindgen_ty_219 = _bindgen_ty_219 :: test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_219 { test_msgs__msg__MultiNested__bounded_sequence_of_unbounded_sequences__MAX_SIZE = 3 , } # [repr (C)] pub struct test_msgs__msg__MultiNested { pub array_of_arrays : [test_msgs__msg__Arrays ; 3usize] , pub array_of_bounded_sequences : [test_msgs__msg__BoundedSequences ; 3usize] , pub array_of_unbounded_sequences : [test_msgs__msg__UnboundedSequences ; 3usize] , pub bounded_sequence_of_arrays : test_msgs__msg__Arrays__Sequence , pub bounded_sequence_of_bounded_sequences : test_msgs__msg__BoundedSequences__Sequence , pub bounded_sequence_of_unbounded_sequences : test_msgs__msg__UnboundedSequences__Sequence , pub unbounded_sequence_of_arrays : test_msgs__msg__Arrays__Sequence , pub unbounded_sequence_of_bounded_sequences : test_msgs__msg__BoundedSequences__Sequence , pub unbounded_sequence_of_unbounded_sequences : test_msgs__msg__UnboundedSequences__Sequence , } # [test] fn bindgen_test_layout_test_msgs__msg__MultiNested () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__MultiNested > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__MultiNested > () , 6864usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__MultiNested))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__MultiNested > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__MultiNested))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . array_of_arrays) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (array_of_arrays))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . array_of_bounded_sequences) as usize - ptr as usize } , 2208usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (array_of_bounded_sequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . array_of_unbounded_sequences) as usize - ptr as usize } , 4464usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (array_of_unbounded_sequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_sequence_of_arrays) as usize - ptr as usize } , 6720usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (bounded_sequence_of_arrays))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_sequence_of_bounded_sequences) as usize - ptr as usize } , 6744usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (bounded_sequence_of_bounded_sequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_sequence_of_unbounded_sequences) as usize - ptr as usize } , 6768usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (bounded_sequence_of_unbounded_sequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . unbounded_sequence_of_arrays) as usize - ptr as usize } , 6792usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (unbounded_sequence_of_arrays))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . unbounded_sequence_of_bounded_sequences) as usize - ptr as usize } , 6816usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (unbounded_sequence_of_bounded_sequences))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . unbounded_sequence_of_unbounded_sequences) as usize - ptr as usize } , 6840usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested) , "::" , stringify ! (unbounded_sequence_of_unbounded_sequences))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__MultiNested__Sequence { pub data : * mut test_msgs__msg__MultiNested , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__MultiNested__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__MultiNested__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__MultiNested__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__MultiNested__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__MultiNested__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__MultiNested__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__MultiNested__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Nested { pub basic_types_value : test_msgs__msg__BasicTypes , } # [test] fn bindgen_test_layout_test_msgs__msg__Nested () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Nested > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Nested > () , 48usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Nested))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Nested > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Nested))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Nested) , "::" , stringify ! (basic_types_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Nested__Sequence { pub data : * mut test_msgs__msg__Nested , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Nested__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Nested__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Nested__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Nested__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Nested__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Nested__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Nested__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Nested__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Nested__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__Strings__STRING_CONST : & [u8 ; 13usize] = b"Hello world!\0" ; pub const test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE : _bindgen_ty_220 = _bindgen_ty_220 :: test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_220 { test_msgs__msg__Strings__bounded_string_value__MAX_STRING_SIZE = 22 , } pub const test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE : _bindgen_ty_221 = _bindgen_ty_221 :: test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_221 { test_msgs__msg__Strings__bounded_string_value_default1__MAX_STRING_SIZE = 22 , } pub const test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE : _bindgen_ty_222 = _bindgen_ty_222 :: test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_222 { test_msgs__msg__Strings__bounded_string_value_default2__MAX_STRING_SIZE = 22 , } pub const test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE : _bindgen_ty_223 = _bindgen_ty_223 :: test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_223 { test_msgs__msg__Strings__bounded_string_value_default3__MAX_STRING_SIZE = 22 , } pub const test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE : _bindgen_ty_224 = _bindgen_ty_224 :: test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_224 { test_msgs__msg__Strings__bounded_string_value_default4__MAX_STRING_SIZE = 22 , } pub const test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE : _bindgen_ty_225 = _bindgen_ty_225 :: test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_225 { test_msgs__msg__Strings__bounded_string_value_default5__MAX_STRING_SIZE = 22 , } # [repr (C)] pub struct test_msgs__msg__Strings { pub string_value : rosidl_runtime_c__String , pub string_value_default1 : rosidl_runtime_c__String , pub string_value_default2 : rosidl_runtime_c__String , pub string_value_default3 : rosidl_runtime_c__String , pub string_value_default4 : rosidl_runtime_c__String , pub string_value_default5 : rosidl_runtime_c__String , pub bounded_string_value : rosidl_runtime_c__String , pub bounded_string_value_default1 : rosidl_runtime_c__String , pub bounded_string_value_default2 : rosidl_runtime_c__String , pub bounded_string_value_default3 : rosidl_runtime_c__String , pub bounded_string_value_default4 : rosidl_runtime_c__String , pub bounded_string_value_default5 : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_test_msgs__msg__Strings () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Strings > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Strings > () , 288usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Strings))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Strings > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Strings))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value_default1) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value_default1))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value_default2) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value_default2))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value_default3) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value_default3))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value_default4) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value_default4))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value_default5) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (string_value_default5))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value_default1) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value_default1))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value_default2) as usize - ptr as usize } , 192usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value_default2))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value_default3) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value_default3))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value_default4) as usize - ptr as usize } , 240usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value_default4))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_string_value_default5) as usize - ptr as usize } , 264usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings) , "::" , stringify ! (bounded_string_value_default5))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__Strings__Sequence { pub data : * mut test_msgs__msg__Strings , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__Strings__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__Strings__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__Strings__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__Strings__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__Strings__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__Strings__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__Strings__Sequence) , "::" , stringify ! (capacity))) ; } pub const test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE : _bindgen_ty_226 = _bindgen_ty_226 :: test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_226 { test_msgs__msg__WStrings__bounded_sequence_of_wstrings__MAX_SIZE = 3 , } # [repr (C)] pub struct test_msgs__msg__WStrings { pub wstring_value : rosidl_runtime_c__U16String , pub wstring_value_default1 : rosidl_runtime_c__U16String , pub wstring_value_default2 : rosidl_runtime_c__U16String , pub wstring_value_default3 : rosidl_runtime_c__U16String , pub array_of_wstrings : [rosidl_runtime_c__U16String ; 3usize] , pub bounded_sequence_of_wstrings : rosidl_runtime_c__U16String__Sequence , pub unbounded_sequence_of_wstrings : rosidl_runtime_c__U16String__Sequence , } # [test] fn bindgen_test_layout_test_msgs__msg__WStrings () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__WStrings > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__WStrings > () , 216usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__WStrings))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__WStrings > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__WStrings))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wstring_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (wstring_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wstring_value_default1) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (wstring_value_default1))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wstring_value_default2) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (wstring_value_default2))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . wstring_value_default3) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (wstring_value_default3))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . array_of_wstrings) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (array_of_wstrings))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bounded_sequence_of_wstrings) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (bounded_sequence_of_wstrings))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . unbounded_sequence_of_wstrings) as usize - ptr as usize } , 192usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings) , "::" , stringify ! (unbounded_sequence_of_wstrings))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__msg__WStrings__Sequence { pub data : * mut test_msgs__msg__WStrings , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__msg__WStrings__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__msg__WStrings__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__msg__WStrings__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__msg__WStrings__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__msg__WStrings__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__msg__WStrings__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__msg__WStrings__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__srv__Arrays_Request { pub bool_values : [bool ; 3usize] , pub byte_values : [u8 ; 3usize] , pub char_values : [u8 ; 3usize] , pub float32_values : [f32 ; 3usize] , pub float64_values : [f64 ; 3usize] , pub int8_values : [i8 ; 3usize] , pub uint8_values : [u8 ; 3usize] , pub int16_values : [i16 ; 3usize] , pub uint16_values : [u16 ; 3usize] , pub int32_values : [i32 ; 3usize] , pub uint32_values : [u32 ; 3usize] , pub int64_values : [i64 ; 3usize] , pub uint64_values : [u64 ; 3usize] , pub string_values : [rosidl_runtime_c__String ; 3usize] , pub basic_types_values : [test_msgs__msg__BasicTypes ; 3usize] , pub constants_values : [test_msgs__msg__Constants ; 3usize] , pub defaults_values : [test_msgs__msg__Defaults ; 3usize] , pub bool_values_default : [bool ; 3usize] , pub byte_values_default : [u8 ; 3usize] , pub char_values_default : [u8 ; 3usize] , pub float32_values_default : [f32 ; 3usize] , pub float64_values_default : [f64 ; 3usize] , pub int8_values_default : [i8 ; 3usize] , pub uint8_values_default : [u8 ; 3usize] , pub int16_values_default : [i16 ; 3usize] , pub uint16_values_default : [u16 ; 3usize] , pub int32_values_default : [i32 ; 3usize] , pub uint32_values_default : [u32 ; 3usize] , pub int64_values_default : [i64 ; 3usize] , pub uint64_values_default : [u64 ; 3usize] , pub string_values_default : [rosidl_runtime_c__String ; 3usize] , } # [test] fn bindgen_test_layout_test_msgs__srv__Arrays_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Arrays_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Arrays_Request > () , 728usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Arrays_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Arrays_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Arrays_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 3usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 6usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 51usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 54usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 68usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (string_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 368usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 512usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 515usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 518usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 524usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 536usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 560usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 563usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 566usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 572usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 580usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 592usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 608usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 632usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values_default) as usize - ptr as usize } , 656usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request) , "::" , stringify ! (string_values_default))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Arrays_Request__Sequence { pub data : * mut test_msgs__srv__Arrays_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__Arrays_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Arrays_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Arrays_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Arrays_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Arrays_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Arrays_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__srv__Arrays_Response { pub bool_values : [bool ; 3usize] , pub byte_values : [u8 ; 3usize] , pub char_values : [u8 ; 3usize] , pub float32_values : [f32 ; 3usize] , pub float64_values : [f64 ; 3usize] , pub int8_values : [i8 ; 3usize] , pub uint8_values : [u8 ; 3usize] , pub int16_values : [i16 ; 3usize] , pub uint16_values : [u16 ; 3usize] , pub int32_values : [i32 ; 3usize] , pub uint32_values : [u32 ; 3usize] , pub int64_values : [i64 ; 3usize] , pub uint64_values : [u64 ; 3usize] , pub string_values : [rosidl_runtime_c__String ; 3usize] , pub basic_types_values : [test_msgs__msg__BasicTypes ; 3usize] , pub constants_values : [test_msgs__msg__Constants ; 3usize] , pub defaults_values : [test_msgs__msg__Defaults ; 3usize] , pub bool_values_default : [bool ; 3usize] , pub byte_values_default : [u8 ; 3usize] , pub char_values_default : [u8 ; 3usize] , pub float32_values_default : [f32 ; 3usize] , pub float64_values_default : [f64 ; 3usize] , pub int8_values_default : [i8 ; 3usize] , pub uint8_values_default : [u8 ; 3usize] , pub int16_values_default : [i16 ; 3usize] , pub uint16_values_default : [u16 ; 3usize] , pub int32_values_default : [i32 ; 3usize] , pub uint32_values_default : [u32 ; 3usize] , pub int64_values_default : [i64 ; 3usize] , pub uint64_values_default : [u64 ; 3usize] , pub string_values_default : [rosidl_runtime_c__String ; 3usize] , } # [test] fn bindgen_test_layout_test_msgs__srv__Arrays_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Arrays_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Arrays_Response > () , 728usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Arrays_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Arrays_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Arrays_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (bool_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values) as usize - ptr as usize } , 3usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (byte_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values) as usize - ptr as usize } , 6usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (char_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values) as usize - ptr as usize } , 12usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (float32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (float64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values) as usize - ptr as usize } , 51usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint8_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values) as usize - ptr as usize } , 54usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint16_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values) as usize - ptr as usize } , 68usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint32_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint64_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (string_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . basic_types_values) as usize - ptr as usize } , 216usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (basic_types_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . constants_values) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (constants_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . defaults_values) as usize - ptr as usize } , 368usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (defaults_values))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_values_default) as usize - ptr as usize } , 512usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (bool_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_values_default) as usize - ptr as usize } , 515usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (byte_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_values_default) as usize - ptr as usize } , 518usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (char_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_values_default) as usize - ptr as usize } , 524usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (float32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_values_default) as usize - ptr as usize } , 536usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (float64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_values_default) as usize - ptr as usize } , 560usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_values_default) as usize - ptr as usize } , 563usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint8_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_values_default) as usize - ptr as usize } , 566usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_values_default) as usize - ptr as usize } , 572usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint16_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_values_default) as usize - ptr as usize } , 580usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_values_default) as usize - ptr as usize } , 592usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint32_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_values_default) as usize - ptr as usize } , 608usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (int64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_values_default) as usize - ptr as usize } , 632usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (uint64_values_default))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_values_default) as usize - ptr as usize } , 656usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response) , "::" , stringify ! (string_values_default))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Arrays_Response__Sequence { pub data : * mut test_msgs__srv__Arrays_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__Arrays_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Arrays_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Arrays_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Arrays_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Arrays_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Arrays_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Arrays_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__srv__BasicTypes_Request { pub bool_value : bool , pub byte_value : u8 , pub char_value : u8 , pub float32_value : f32 , pub float64_value : f64 , pub int8_value : i8 , pub uint8_value : u8 , pub int16_value : i16 , pub uint16_value : u16 , pub int32_value : i32 , pub uint32_value : u32 , pub int64_value : i64 , pub uint64_value : u64 , pub string_value : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_test_msgs__srv__BasicTypes_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__BasicTypes_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__BasicTypes_Request > () , 72usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__BasicTypes_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__BasicTypes_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__BasicTypes_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (bool_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_value) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (byte_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_value) as usize - ptr as usize } , 2usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (char_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_value) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (float32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (float64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_value) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (int8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_value) as usize - ptr as usize } , 17usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (uint8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_value) as usize - ptr as usize } , 18usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (int16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_value) as usize - ptr as usize } , 20usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (uint16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (int32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_value) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (uint32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_value) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (int64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_value) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (uint64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request) , "::" , stringify ! (string_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__BasicTypes_Request__Sequence { pub data : * mut test_msgs__srv__BasicTypes_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__BasicTypes_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__BasicTypes_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__BasicTypes_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__BasicTypes_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__BasicTypes_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__BasicTypes_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct test_msgs__srv__BasicTypes_Response { pub bool_value : bool , pub byte_value : u8 , pub char_value : u8 , pub float32_value : f32 , pub float64_value : f64 , pub int8_value : i8 , pub uint8_value : u8 , pub int16_value : i16 , pub uint16_value : u16 , pub int32_value : i32 , pub uint32_value : u32 , pub int64_value : i64 , pub uint64_value : u64 , pub string_value : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_test_msgs__srv__BasicTypes_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__BasicTypes_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__BasicTypes_Response > () , 72usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__BasicTypes_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__BasicTypes_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__BasicTypes_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . bool_value) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (bool_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . byte_value) as usize - ptr as usize } , 1usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (byte_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . char_value) as usize - ptr as usize } , 2usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (char_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float32_value) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (float32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . float64_value) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (float64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int8_value) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (int8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint8_value) as usize - ptr as usize } , 17usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (uint8_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int16_value) as usize - ptr as usize } , 18usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (int16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint16_value) as usize - ptr as usize } , 20usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (uint16_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int32_value) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (int32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint32_value) as usize - ptr as usize } , 28usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (uint32_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . int64_value) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (int64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uint64_value) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (uint64_value))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . string_value) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response) , "::" , stringify ! (string_value))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__BasicTypes_Response__Sequence { pub data : * mut test_msgs__srv__BasicTypes_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__BasicTypes_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__BasicTypes_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__BasicTypes_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__BasicTypes_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__BasicTypes_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__BasicTypes_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__BasicTypes_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Empty_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_test_msgs__srv__Empty_Request () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Empty_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Empty_Request > () , 1usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Empty_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Empty_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Empty_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Empty_Request__Sequence { pub data : * mut test_msgs__srv__Empty_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__Empty_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Empty_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Empty_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Empty_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Empty_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Empty_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Empty_Response { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_test_msgs__srv__Empty_Response () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Empty_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Empty_Response > () , 1usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Empty_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Empty_Response > () , 1usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Empty_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Response) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct test_msgs__srv__Empty_Response__Sequence { pub data : * mut test_msgs__srv__Empty_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_test_msgs__srv__Empty_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < test_msgs__srv__Empty_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< test_msgs__srv__Empty_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (test_msgs__srv__Empty_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< test_msgs__srv__Empty_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (test_msgs__srv__Empty_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (test_msgs__srv__Empty_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct tf2_msgs__action__LookupTransform_Goal { pub target_frame : rosidl_runtime_c__String , pub source_frame : rosidl_runtime_c__String , pub source_time : builtin_interfaces__msg__Time , pub timeout : builtin_interfaces__msg__Duration , pub target_time : builtin_interfaces__msg__Time , pub fixed_frame : rosidl_runtime_c__String , pub advanced : bool , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Goal () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Goal > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Goal > () , 104usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Goal))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Goal > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Goal))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . target_frame) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (target_frame))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . source_frame) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (source_frame))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . source_time) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (source_time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . timeout) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (timeout))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . target_time) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (target_time))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . fixed_frame) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (fixed_frame))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . advanced) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal) , "::" , stringify ! (advanced))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_Goal__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_Goal , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Goal__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Goal__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Goal__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Goal__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Goal__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Goal__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Goal__Sequence) , "::" , stringify ! (capacity))) ; } pub const tf2_msgs__msg__TF2Error__NO_ERROR : _bindgen_ty_227 = _bindgen_ty_227 :: tf2_msgs__msg__TF2Error__NO_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_227 { tf2_msgs__msg__TF2Error__NO_ERROR = 0 , } pub const tf2_msgs__msg__TF2Error__LOOKUP_ERROR : _bindgen_ty_228 = _bindgen_ty_228 :: tf2_msgs__msg__TF2Error__LOOKUP_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_228 { tf2_msgs__msg__TF2Error__LOOKUP_ERROR = 1 , } pub const tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR : _bindgen_ty_229 = _bindgen_ty_229 :: tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_229 { tf2_msgs__msg__TF2Error__CONNECTIVITY_ERROR = 2 , } pub const tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR : _bindgen_ty_230 = _bindgen_ty_230 :: tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_230 { tf2_msgs__msg__TF2Error__EXTRAPOLATION_ERROR = 3 , } pub const tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR : _bindgen_ty_231 = _bindgen_ty_231 :: tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_231 { tf2_msgs__msg__TF2Error__INVALID_ARGUMENT_ERROR = 4 , } pub const tf2_msgs__msg__TF2Error__TIMEOUT_ERROR : _bindgen_ty_232 = _bindgen_ty_232 :: tf2_msgs__msg__TF2Error__TIMEOUT_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_232 { tf2_msgs__msg__TF2Error__TIMEOUT_ERROR = 5 , } pub const tf2_msgs__msg__TF2Error__TRANSFORM_ERROR : _bindgen_ty_233 = _bindgen_ty_233 :: tf2_msgs__msg__TF2Error__TRANSFORM_ERROR ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_233 { tf2_msgs__msg__TF2Error__TRANSFORM_ERROR = 6 , } # [repr (C)] pub struct tf2_msgs__msg__TF2Error { pub error : u8 , pub error_string : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_tf2_msgs__msg__TF2Error () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__msg__TF2Error > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__msg__TF2Error > () , 32usize , concat ! ("Size of: " , stringify ! (tf2_msgs__msg__TF2Error))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__msg__TF2Error > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__msg__TF2Error))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . error) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TF2Error) , "::" , stringify ! (error))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . error_string) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TF2Error) , "::" , stringify ! (error_string))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__msg__TF2Error__Sequence { pub data : * mut tf2_msgs__msg__TF2Error , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__msg__TF2Error__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__msg__TF2Error__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__msg__TF2Error__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__msg__TF2Error__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__msg__TF2Error__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__msg__TF2Error__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TF2Error__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TF2Error__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TF2Error__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct tf2_msgs__action__LookupTransform_Result { pub transform : geometry_msgs__msg__TransformStamped , pub error : tf2_msgs__msg__TF2Error , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Result () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Result > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Result > () , 144usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Result))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Result > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Result))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transform) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Result) , "::" , stringify ! (transform))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . error) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Result) , "::" , stringify ! (error))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_Result__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_Result , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Result__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Result__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Result__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Result__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Result__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Result__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Result__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Result__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Result__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_Feedback { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Feedback () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Feedback > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Feedback > () , 1usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Feedback > () , 1usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Feedback))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_Feedback__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_Feedback , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_Feedback__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_Feedback__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_Feedback__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_Feedback__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_Feedback__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_Feedback__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct tf2_msgs__action__LookupTransform_SendGoal_Request { pub goal_id : unique_identifier_msgs__msg__UUID , pub goal : tf2_msgs__action__LookupTransform_Goal , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Request () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_SendGoal_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_SendGoal_Request > () , 120usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_SendGoal_Request > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request) , "::" , stringify ! (goal))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_SendGoal_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_SendGoal_Response { pub accepted : bool , pub stamp : builtin_interfaces__msg__Time , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Response () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_SendGoal_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_SendGoal_Response > () , 12usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_SendGoal_Response > () , 4usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accepted) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response) , "::" , stringify ! (accepted))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . stamp) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response) , "::" , stringify ! (stamp))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_SendGoal_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_GetResult_Request { pub goal_id : unique_identifier_msgs__msg__UUID , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Request () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_GetResult_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_GetResult_Request > () , 16usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_GetResult_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request) , "::" , stringify ! (goal_id))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_GetResult_Request__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_GetResult_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_GetResult_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_GetResult_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_GetResult_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct tf2_msgs__action__LookupTransform_GetResult_Response { pub status : i8 , pub result : tf2_msgs__action__LookupTransform_Result , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Response () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_GetResult_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_GetResult_Response > () , 152usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_GetResult_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . status) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response) , "::" , stringify ! (status))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . result) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response) , "::" , stringify ! (result))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_GetResult_Response__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_GetResult_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_GetResult_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_GetResult_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_GetResult_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_GetResult_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_GetResult_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_FeedbackMessage { pub goal_id : unique_identifier_msgs__msg__UUID , pub feedback : tf2_msgs__action__LookupTransform_Feedback , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_FeedbackMessage () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_FeedbackMessage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_FeedbackMessage > () , 17usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_FeedbackMessage > () , 1usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . goal_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage) , "::" , stringify ! (goal_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . feedback) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage) , "::" , stringify ! (feedback))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence { pub data : * mut tf2_msgs__action__LookupTransform_FeedbackMessage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__msg__TFMessage { pub transforms : geometry_msgs__msg__TransformStamped__Sequence , } # [test] fn bindgen_test_layout_tf2_msgs__msg__TFMessage () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__msg__TFMessage > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__msg__TFMessage > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__msg__TFMessage))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__msg__TFMessage > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__msg__TFMessage))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transforms) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TFMessage) , "::" , stringify ! (transforms))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__msg__TFMessage__Sequence { pub data : * mut tf2_msgs__msg__TFMessage , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__msg__TFMessage__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__msg__TFMessage__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__msg__TFMessage__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__msg__TFMessage__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__msg__TFMessage__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__msg__TFMessage__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TFMessage__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TFMessage__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__msg__TFMessage__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__srv__FrameGraph_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Request () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__srv__FrameGraph_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__srv__FrameGraph_Request > () , 1usize , concat ! ("Size of: " , stringify ! (tf2_msgs__srv__FrameGraph_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__srv__FrameGraph_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__srv__FrameGraph_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__srv__FrameGraph_Request__Sequence { pub data : * mut tf2_msgs__srv__FrameGraph_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__srv__FrameGraph_Request__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__srv__FrameGraph_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__srv__FrameGraph_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__srv__FrameGraph_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__srv__FrameGraph_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct tf2_msgs__srv__FrameGraph_Response { pub frame_yaml : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Response () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__srv__FrameGraph_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__srv__FrameGraph_Response > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__srv__FrameGraph_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__srv__FrameGraph_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__srv__FrameGraph_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . frame_yaml) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Response) , "::" , stringify ! (frame_yaml))) ; } # [repr (C)] # [derive (Debug)] pub struct tf2_msgs__srv__FrameGraph_Response__Sequence { pub data : * mut tf2_msgs__srv__FrameGraph_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_tf2_msgs__srv__FrameGraph_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < tf2_msgs__srv__FrameGraph_Response__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< tf2_msgs__srv__FrameGraph_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (tf2_msgs__srv__FrameGraph_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< tf2_msgs__srv__FrameGraph_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (tf2_msgs__srv__FrameGraph_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (tf2_msgs__srv__FrameGraph_Response__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct trajectory_msgs__msg__JointTrajectoryPoint { pub positions : rosidl_runtime_c__double__Sequence , pub velocities : rosidl_runtime_c__double__Sequence , pub accelerations : rosidl_runtime_c__double__Sequence , pub effort : rosidl_runtime_c__double__Sequence , pub time_from_start : builtin_interfaces__msg__Duration , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectoryPoint () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__JointTrajectoryPoint > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__JointTrajectoryPoint > () , 104usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__JointTrajectoryPoint > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . positions) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint) , "::" , stringify ! (positions))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . velocities) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint) , "::" , stringify ! (velocities))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accelerations) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint) , "::" , stringify ! (accelerations))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . effort) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint) , "::" , stringify ! (effort))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_from_start) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint) , "::" , stringify ! (time_from_start))) ; } # [repr (C)] # [derive (Debug)] pub struct trajectory_msgs__msg__JointTrajectoryPoint__Sequence { pub data : * mut trajectory_msgs__msg__JointTrajectoryPoint , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectoryPoint__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__JointTrajectoryPoint__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__JointTrajectoryPoint__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__JointTrajectoryPoint__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectoryPoint__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct trajectory_msgs__msg__JointTrajectory { pub header : std_msgs__msg__Header , pub joint_names : rosidl_runtime_c__String__Sequence , pub points : trajectory_msgs__msg__JointTrajectoryPoint__Sequence , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectory () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__JointTrajectory > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__JointTrajectory > () , 80usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__JointTrajectory))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__JointTrajectory > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__JointTrajectory))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . joint_names) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory) , "::" , stringify ! (joint_names))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory) , "::" , stringify ! (points))) ; } # [repr (C)] # [derive (Debug)] pub struct trajectory_msgs__msg__JointTrajectory__Sequence { pub data : * mut trajectory_msgs__msg__JointTrajectory , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__JointTrajectory__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__JointTrajectory__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__JointTrajectory__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__JointTrajectory__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__JointTrajectory__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__JointTrajectory__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__JointTrajectory__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct trajectory_msgs__msg__MultiDOFJointTrajectoryPoint { pub transforms : geometry_msgs__msg__Transform__Sequence , pub velocities : geometry_msgs__msg__Twist__Sequence , pub accelerations : geometry_msgs__msg__Twist__Sequence , pub time_from_start : builtin_interfaces__msg__Duration , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectoryPoint () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__MultiDOFJointTrajectoryPoint > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__MultiDOFJointTrajectoryPoint > () , 80usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__MultiDOFJointTrajectoryPoint > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . transforms) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) , "::" , stringify ! (transforms))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . velocities) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) , "::" , stringify ! (velocities))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . accelerations) as usize - ptr as usize } , 48usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) , "::" , stringify ! (accelerations))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . time_from_start) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint) , "::" , stringify ! (time_from_start))) ; } # [repr (C)] # [derive (Debug)] pub struct trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence { pub data : * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct trajectory_msgs__msg__MultiDOFJointTrajectory { pub header : std_msgs__msg__Header , pub joint_names : rosidl_runtime_c__String__Sequence , pub points : trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectory () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__MultiDOFJointTrajectory > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__MultiDOFJointTrajectory > () , 80usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__MultiDOFJointTrajectory > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . joint_names) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory) , "::" , stringify ! (joint_names))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory) , "::" , stringify ! (points))) ; } # [repr (C)] # [derive (Debug)] pub struct trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence { pub data : * mut trajectory_msgs__msg__MultiDOFJointTrajectory , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence) , "::" , stringify ! (capacity))) ; } pub const visualization_msgs__msg__ImageMarker__CIRCLE : _bindgen_ty_234 = _bindgen_ty_234 :: visualization_msgs__msg__ImageMarker__CIRCLE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_234 { visualization_msgs__msg__ImageMarker__CIRCLE = 0 , } pub const visualization_msgs__msg__ImageMarker__LINE_STRIP : _bindgen_ty_235 = _bindgen_ty_235 :: visualization_msgs__msg__ImageMarker__LINE_STRIP ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_235 { visualization_msgs__msg__ImageMarker__LINE_STRIP = 1 , } pub const visualization_msgs__msg__ImageMarker__LINE_LIST : _bindgen_ty_236 = _bindgen_ty_236 :: visualization_msgs__msg__ImageMarker__LINE_LIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_236 { visualization_msgs__msg__ImageMarker__LINE_LIST = 2 , } pub const visualization_msgs__msg__ImageMarker__POLYGON : _bindgen_ty_237 = _bindgen_ty_237 :: visualization_msgs__msg__ImageMarker__POLYGON ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_237 { visualization_msgs__msg__ImageMarker__POLYGON = 3 , } pub const visualization_msgs__msg__ImageMarker__POINTS : _bindgen_ty_238 = _bindgen_ty_238 :: visualization_msgs__msg__ImageMarker__POINTS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_238 { visualization_msgs__msg__ImageMarker__POINTS = 4 , } pub const visualization_msgs__msg__ImageMarker__ADD : _bindgen_ty_239 = _bindgen_ty_239 :: visualization_msgs__msg__ImageMarker__ADD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_239 { visualization_msgs__msg__ImageMarker__ADD = 0 , } pub const visualization_msgs__msg__ImageMarker__REMOVE : _bindgen_ty_240 = _bindgen_ty_240 :: visualization_msgs__msg__ImageMarker__REMOVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_240 { visualization_msgs__msg__ImageMarker__REMOVE = 1 , } # [repr (C)] pub struct visualization_msgs__msg__ImageMarker { pub header : std_msgs__msg__Header , pub ns : rosidl_runtime_c__String , pub id : i32 , pub type_ : i32 , pub action : i32 , pub position : geometry_msgs__msg__Point , pub scale : f32 , pub outline_color : std_msgs__msg__ColorRGBA , pub filled : u8 , pub fill_color : std_msgs__msg__ColorRGBA , pub lifetime : builtin_interfaces__msg__Duration , pub points : geometry_msgs__msg__Point__Sequence , pub outline_colors : std_msgs__msg__ColorRGBA__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__ImageMarker () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__ImageMarker > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__ImageMarker > () , 192usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__ImageMarker))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__ImageMarker > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__ImageMarker))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ns) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (ns))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . action) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (action))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . position) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (position))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . scale) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (scale))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . outline_color) as usize - ptr as usize } , 100usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (outline_color))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . filled) as usize - ptr as usize } , 116usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (filled))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . fill_color) as usize - ptr as usize } , 120usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (fill_color))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . lifetime) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (lifetime))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (points))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . outline_colors) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker) , "::" , stringify ! (outline_colors))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__ImageMarker__Sequence { pub data : * mut visualization_msgs__msg__ImageMarker , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__ImageMarker__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__ImageMarker__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__ImageMarker__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__ImageMarker__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__ImageMarker__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__ImageMarker__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__ImageMarker__Sequence) , "::" , stringify ! (capacity))) ; } pub const visualization_msgs__msg__MenuEntry__FEEDBACK : _bindgen_ty_241 = _bindgen_ty_241 :: visualization_msgs__msg__MenuEntry__FEEDBACK ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_241 { visualization_msgs__msg__MenuEntry__FEEDBACK = 0 , } pub const visualization_msgs__msg__MenuEntry__ROSRUN : _bindgen_ty_242 = _bindgen_ty_242 :: visualization_msgs__msg__MenuEntry__ROSRUN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_242 { visualization_msgs__msg__MenuEntry__ROSRUN = 1 , } pub const visualization_msgs__msg__MenuEntry__ROSLAUNCH : _bindgen_ty_243 = _bindgen_ty_243 :: visualization_msgs__msg__MenuEntry__ROSLAUNCH ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_243 { visualization_msgs__msg__MenuEntry__ROSLAUNCH = 2 , } # [repr (C)] pub struct visualization_msgs__msg__MenuEntry { pub id : u32 , pub parent_id : u32 , pub title : rosidl_runtime_c__String , pub command : rosidl_runtime_c__String , pub command_type : u8 , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MenuEntry () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MenuEntry > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MenuEntry > () , 64usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MenuEntry))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MenuEntry > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MenuEntry))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . parent_id) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry) , "::" , stringify ! (parent_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . title) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry) , "::" , stringify ! (title))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . command) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry) , "::" , stringify ! (command))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . command_type) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry) , "::" , stringify ! (command_type))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__MenuEntry__Sequence { pub data : * mut visualization_msgs__msg__MenuEntry , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MenuEntry__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MenuEntry__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MenuEntry__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MenuEntry__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MenuEntry__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MenuEntry__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MenuEntry__Sequence) , "::" , stringify ! (capacity))) ; } pub const visualization_msgs__msg__InteractiveMarkerControl__INHERIT : _bindgen_ty_244 = _bindgen_ty_244 :: visualization_msgs__msg__InteractiveMarkerControl__INHERIT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_244 { visualization_msgs__msg__InteractiveMarkerControl__INHERIT = 0 , } pub const visualization_msgs__msg__InteractiveMarkerControl__FIXED : _bindgen_ty_245 = _bindgen_ty_245 :: visualization_msgs__msg__InteractiveMarkerControl__FIXED ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_245 { visualization_msgs__msg__InteractiveMarkerControl__FIXED = 1 , } pub const visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING : _bindgen_ty_246 = _bindgen_ty_246 :: visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_246 { visualization_msgs__msg__InteractiveMarkerControl__VIEW_FACING = 2 , } pub const visualization_msgs__msg__InteractiveMarkerControl__NONE : _bindgen_ty_247 = _bindgen_ty_247 :: visualization_msgs__msg__InteractiveMarkerControl__NONE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_247 { visualization_msgs__msg__InteractiveMarkerControl__NONE = 0 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MENU : _bindgen_ty_248 = _bindgen_ty_248 :: visualization_msgs__msg__InteractiveMarkerControl__MENU ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_248 { visualization_msgs__msg__InteractiveMarkerControl__MENU = 1 , } pub const visualization_msgs__msg__InteractiveMarkerControl__BUTTON : _bindgen_ty_249 = _bindgen_ty_249 :: visualization_msgs__msg__InteractiveMarkerControl__BUTTON ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_249 { visualization_msgs__msg__InteractiveMarkerControl__BUTTON = 2 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS : _bindgen_ty_250 = _bindgen_ty_250 :: visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_250 { visualization_msgs__msg__InteractiveMarkerControl__MOVE_AXIS = 3 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE : _bindgen_ty_251 = _bindgen_ty_251 :: visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_251 { visualization_msgs__msg__InteractiveMarkerControl__MOVE_PLANE = 4 , } pub const visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS : _bindgen_ty_252 = _bindgen_ty_252 :: visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_252 { visualization_msgs__msg__InteractiveMarkerControl__ROTATE_AXIS = 5 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE : _bindgen_ty_253 = _bindgen_ty_253 :: visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_253 { visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE = 6 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D : _bindgen_ty_254 = _bindgen_ty_254 :: visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_254 { visualization_msgs__msg__InteractiveMarkerControl__MOVE_3D = 7 , } pub const visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D : _bindgen_ty_255 = _bindgen_ty_255 :: visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_255 { visualization_msgs__msg__InteractiveMarkerControl__ROTATE_3D = 8 , } pub const visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D : _bindgen_ty_256 = _bindgen_ty_256 :: visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_256 { visualization_msgs__msg__InteractiveMarkerControl__MOVE_ROTATE_3D = 9 , } pub const visualization_msgs__msg__Marker__ARROW : _bindgen_ty_257 = _bindgen_ty_257 :: visualization_msgs__msg__Marker__ARROW ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_257 { visualization_msgs__msg__Marker__ARROW = 0 , } pub const visualization_msgs__msg__Marker__CUBE : _bindgen_ty_258 = _bindgen_ty_258 :: visualization_msgs__msg__Marker__CUBE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_258 { visualization_msgs__msg__Marker__CUBE = 1 , } pub const visualization_msgs__msg__Marker__SPHERE : _bindgen_ty_259 = _bindgen_ty_259 :: visualization_msgs__msg__Marker__SPHERE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_259 { visualization_msgs__msg__Marker__SPHERE = 2 , } pub const visualization_msgs__msg__Marker__CYLINDER : _bindgen_ty_260 = _bindgen_ty_260 :: visualization_msgs__msg__Marker__CYLINDER ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_260 { visualization_msgs__msg__Marker__CYLINDER = 3 , } pub const visualization_msgs__msg__Marker__LINE_STRIP : _bindgen_ty_261 = _bindgen_ty_261 :: visualization_msgs__msg__Marker__LINE_STRIP ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_261 { visualization_msgs__msg__Marker__LINE_STRIP = 4 , } pub const visualization_msgs__msg__Marker__LINE_LIST : _bindgen_ty_262 = _bindgen_ty_262 :: visualization_msgs__msg__Marker__LINE_LIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_262 { visualization_msgs__msg__Marker__LINE_LIST = 5 , } pub const visualization_msgs__msg__Marker__CUBE_LIST : _bindgen_ty_263 = _bindgen_ty_263 :: visualization_msgs__msg__Marker__CUBE_LIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_263 { visualization_msgs__msg__Marker__CUBE_LIST = 6 , } pub const visualization_msgs__msg__Marker__SPHERE_LIST : _bindgen_ty_264 = _bindgen_ty_264 :: visualization_msgs__msg__Marker__SPHERE_LIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_264 { visualization_msgs__msg__Marker__SPHERE_LIST = 7 , } pub const visualization_msgs__msg__Marker__POINTS : _bindgen_ty_265 = _bindgen_ty_265 :: visualization_msgs__msg__Marker__POINTS ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_265 { visualization_msgs__msg__Marker__POINTS = 8 , } pub const visualization_msgs__msg__Marker__TEXT_VIEW_FACING : _bindgen_ty_266 = _bindgen_ty_266 :: visualization_msgs__msg__Marker__TEXT_VIEW_FACING ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_266 { visualization_msgs__msg__Marker__TEXT_VIEW_FACING = 9 , } pub const visualization_msgs__msg__Marker__MESH_RESOURCE : _bindgen_ty_267 = _bindgen_ty_267 :: visualization_msgs__msg__Marker__MESH_RESOURCE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_267 { visualization_msgs__msg__Marker__MESH_RESOURCE = 10 , } pub const visualization_msgs__msg__Marker__TRIANGLE_LIST : _bindgen_ty_268 = _bindgen_ty_268 :: visualization_msgs__msg__Marker__TRIANGLE_LIST ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_268 { visualization_msgs__msg__Marker__TRIANGLE_LIST = 11 , } pub const visualization_msgs__msg__Marker__ADD : _bindgen_ty_269 = _bindgen_ty_269 :: visualization_msgs__msg__Marker__ADD ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_269 { visualization_msgs__msg__Marker__ADD = 0 , } pub const visualization_msgs__msg__Marker__MODIFY : _bindgen_ty_270 = _bindgen_ty_270 :: visualization_msgs__msg__Marker__MODIFY ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_270 { visualization_msgs__msg__Marker__MODIFY = 0 , } pub const visualization_msgs__msg__Marker__DELETE : _bindgen_ty_271 = _bindgen_ty_271 :: visualization_msgs__msg__Marker__DELETE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_271 { visualization_msgs__msg__Marker__DELETE = 2 , } pub const visualization_msgs__msg__Marker__DELETEALL : _bindgen_ty_272 = _bindgen_ty_272 :: visualization_msgs__msg__Marker__DELETEALL ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_272 { visualization_msgs__msg__Marker__DELETEALL = 3 , } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__UVCoordinate { pub u : f32 , pub v : f32 , } # [test] fn bindgen_test_layout_visualization_msgs__msg__UVCoordinate () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__UVCoordinate > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__UVCoordinate > () , 8usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__UVCoordinate))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__UVCoordinate > () , 4usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__UVCoordinate))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . u) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__UVCoordinate) , "::" , stringify ! (u))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . v) as usize - ptr as usize } , 4usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__UVCoordinate) , "::" , stringify ! (v))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__UVCoordinate__Sequence { pub data : * mut visualization_msgs__msg__UVCoordinate , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__UVCoordinate__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__UVCoordinate__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__UVCoordinate__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__UVCoordinate__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__UVCoordinate__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__UVCoordinate__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__UVCoordinate__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__UVCoordinate__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__UVCoordinate__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__MeshFile { pub filename : rosidl_runtime_c__String , pub data : rosidl_runtime_c__uint8__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MeshFile () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MeshFile > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MeshFile > () , 48usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MeshFile))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MeshFile > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MeshFile))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . filename) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MeshFile) , "::" , stringify ! (filename))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MeshFile) , "::" , stringify ! (data))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__MeshFile__Sequence { pub data : * mut visualization_msgs__msg__MeshFile , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MeshFile__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MeshFile__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MeshFile__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MeshFile__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MeshFile__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MeshFile__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MeshFile__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MeshFile__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MeshFile__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__Marker { pub header : std_msgs__msg__Header , pub ns : rosidl_runtime_c__String , pub id : i32 , pub type_ : i32 , pub action : i32 , pub pose : geometry_msgs__msg__Pose , pub scale : geometry_msgs__msg__Vector3 , pub color : std_msgs__msg__ColorRGBA , pub lifetime : builtin_interfaces__msg__Duration , pub frame_locked : bool , pub points : geometry_msgs__msg__Point__Sequence , pub colors : std_msgs__msg__ColorRGBA__Sequence , pub texture_resource : rosidl_runtime_c__String , pub texture : sensor_msgs__msg__CompressedImage , pub uv_coordinates : visualization_msgs__msg__UVCoordinate__Sequence , pub text : rosidl_runtime_c__String , pub mesh_resource : rosidl_runtime_c__String , pub mesh_file : visualization_msgs__msg__MeshFile , pub mesh_use_embedded_materials : bool , } # [test] fn bindgen_test_layout_visualization_msgs__msg__Marker () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__Marker > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__Marker > () , 464usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__Marker))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__Marker > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__Marker))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . ns) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (ns))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . id) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 60usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . action) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (action))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 72usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . scale) as usize - ptr as usize } , 128usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (scale))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . color) as usize - ptr as usize } , 152usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (color))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . lifetime) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (lifetime))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . frame_locked) as usize - ptr as usize } , 176usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (frame_locked))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . points) as usize - ptr as usize } , 184usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (points))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . colors) as usize - ptr as usize } , 208usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (colors))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . texture_resource) as usize - ptr as usize } , 232usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (texture_resource))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . texture) as usize - ptr as usize } , 256usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (texture))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . uv_coordinates) as usize - ptr as usize } , 336usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (uv_coordinates))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . text) as usize - ptr as usize } , 360usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (text))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . mesh_resource) as usize - ptr as usize } , 384usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (mesh_resource))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . mesh_file) as usize - ptr as usize } , 408usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (mesh_file))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . mesh_use_embedded_materials) as usize - ptr as usize } , 456usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker) , "::" , stringify ! (mesh_use_embedded_materials))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__Marker__Sequence { pub data : * mut visualization_msgs__msg__Marker , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__Marker__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__Marker__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__Marker__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__Marker__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__Marker__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__Marker__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__Marker__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarkerControl { pub name : rosidl_runtime_c__String , pub orientation : geometry_msgs__msg__Quaternion , pub orientation_mode : u8 , pub interaction_mode : u8 , pub always_visible : bool , pub markers : visualization_msgs__msg__Marker__Sequence , pub independent_marker_orientation : bool , pub description : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerControl () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerControl > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerControl > () , 120usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerControl > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . orientation) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (orientation))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . orientation_mode) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (orientation_mode))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . interaction_mode) as usize - ptr as usize } , 57usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (interaction_mode))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . always_visible) as usize - ptr as usize } , 58usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (always_visible))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . markers) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (markers))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . independent_marker_orientation) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (independent_marker_orientation))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . description) as usize - ptr as usize } , 96usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl) , "::" , stringify ! (description))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarkerControl__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarkerControl , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerControl__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerControl__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerControl__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerControl__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerControl__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarker { pub header : std_msgs__msg__Header , pub pose : geometry_msgs__msg__Pose , pub name : rosidl_runtime_c__String , pub description : rosidl_runtime_c__String , pub scale : f32 , pub menu_entries : visualization_msgs__msg__MenuEntry__Sequence , pub controls : visualization_msgs__msg__InteractiveMarkerControl__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarker () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarker > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarker > () , 192usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarker))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarker > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarker))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . description) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (description))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . scale) as usize - ptr as usize } , 136usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (scale))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . menu_entries) as usize - ptr as usize } , 144usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (menu_entries))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . controls) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker) , "::" , stringify ! (controls))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarker__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarker , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarker__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarker__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarker__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarker__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarker__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarker__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarker__Sequence) , "::" , stringify ! (capacity))) ; } pub const visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE : _bindgen_ty_273 = _bindgen_ty_273 :: visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_273 { visualization_msgs__msg__InteractiveMarkerFeedback__KEEP_ALIVE = 0 , } pub const visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE : _bindgen_ty_274 = _bindgen_ty_274 :: visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_274 { visualization_msgs__msg__InteractiveMarkerFeedback__POSE_UPDATE = 1 , } pub const visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT : _bindgen_ty_275 = _bindgen_ty_275 :: visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_275 { visualization_msgs__msg__InteractiveMarkerFeedback__MENU_SELECT = 2 , } pub const visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK : _bindgen_ty_276 = _bindgen_ty_276 :: visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_276 { visualization_msgs__msg__InteractiveMarkerFeedback__BUTTON_CLICK = 3 , } pub const visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN : _bindgen_ty_277 = _bindgen_ty_277 :: visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_277 { visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_DOWN = 4 , } pub const visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP : _bindgen_ty_278 = _bindgen_ty_278 :: visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_278 { visualization_msgs__msg__InteractiveMarkerFeedback__MOUSE_UP = 5 , } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarkerFeedback { pub header : std_msgs__msg__Header , pub client_id : rosidl_runtime_c__String , pub marker_name : rosidl_runtime_c__String , pub control_name : rosidl_runtime_c__String , pub event_type : u8 , pub pose : geometry_msgs__msg__Pose , pub menu_entry_id : u32 , pub mouse_point : geometry_msgs__msg__Point , pub mouse_point_valid : bool , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerFeedback () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerFeedback > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerFeedback > () , 208usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerFeedback > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . client_id) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (client_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . marker_name) as usize - ptr as usize } , 56usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (marker_name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . control_name) as usize - ptr as usize } , 80usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (control_name))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . event_type) as usize - ptr as usize } , 104usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (event_type))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 112usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . menu_entry_id) as usize - ptr as usize } , 168usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (menu_entry_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . mouse_point) as usize - ptr as usize } , 176usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (mouse_point))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . mouse_point_valid) as usize - ptr as usize } , 200usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback) , "::" , stringify ! (mouse_point_valid))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarkerFeedback__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarkerFeedback , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerFeedback__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerFeedback__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerFeedback__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerFeedback__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerFeedback__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarkerInit { pub server_id : rosidl_runtime_c__String , pub seq_num : u64 , pub markers : visualization_msgs__msg__InteractiveMarker__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerInit () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerInit > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerInit > () , 56usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerInit > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . server_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit) , "::" , stringify ! (server_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . seq_num) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit) , "::" , stringify ! (seq_num))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . markers) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit) , "::" , stringify ! (markers))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarkerInit__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarkerInit , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerInit__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerInit__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerInit__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerInit__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerInit__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarkerPose { pub header : std_msgs__msg__Header , pub pose : geometry_msgs__msg__Pose , pub name : rosidl_runtime_c__String , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerPose () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerPose > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerPose > () , 112usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerPose > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . header) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose) , "::" , stringify ! (header))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . pose) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose) , "::" , stringify ! (pose))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . name) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose) , "::" , stringify ! (name))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarkerPose__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarkerPose , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerPose__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerPose__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerPose__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerPose__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerPose__Sequence) , "::" , stringify ! (capacity))) ; } pub const visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE : _bindgen_ty_279 = _bindgen_ty_279 :: visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_279 { visualization_msgs__msg__InteractiveMarkerUpdate__KEEP_ALIVE = 0 , } pub const visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE : _bindgen_ty_280 = _bindgen_ty_280 :: visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE ; # [repr (u32)] # [derive (Debug , Clone , Hash , PartialEq , Eq)] pub enum _bindgen_ty_280 { visualization_msgs__msg__InteractiveMarkerUpdate__UPDATE = 1 , } # [repr (C)] pub struct visualization_msgs__msg__InteractiveMarkerUpdate { pub server_id : rosidl_runtime_c__String , pub seq_num : u64 , pub type_ : u8 , pub markers : visualization_msgs__msg__InteractiveMarker__Sequence , pub poses : visualization_msgs__msg__InteractiveMarkerPose__Sequence , pub erases : rosidl_runtime_c__String__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerUpdate () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerUpdate > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerUpdate > () , 112usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerUpdate > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . server_id) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (server_id))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . seq_num) as usize - ptr as usize } , 24usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (seq_num))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . type_) as usize - ptr as usize } , 32usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (type_))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . markers) as usize - ptr as usize } , 40usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (markers))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . poses) as usize - ptr as usize } , 64usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (poses))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . erases) as usize - ptr as usize } , 88usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate) , "::" , stringify ! (erases))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__InteractiveMarkerUpdate__Sequence { pub data : * mut visualization_msgs__msg__InteractiveMarkerUpdate , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__InteractiveMarkerUpdate__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__InteractiveMarkerUpdate__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__InteractiveMarkerUpdate__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__InteractiveMarkerUpdate__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__InteractiveMarkerUpdate__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__MarkerArray { pub markers : visualization_msgs__msg__Marker__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MarkerArray () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MarkerArray > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MarkerArray > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MarkerArray))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MarkerArray > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MarkerArray))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . markers) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MarkerArray) , "::" , stringify ! (markers))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__msg__MarkerArray__Sequence { pub data : * mut visualization_msgs__msg__MarkerArray , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__msg__MarkerArray__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__msg__MarkerArray__Sequence > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__msg__MarkerArray__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__msg__MarkerArray__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__msg__MarkerArray__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__msg__MarkerArray__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MarkerArray__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MarkerArray__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__msg__MarkerArray__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__srv__GetInteractiveMarkers_Request { pub structure_needs_at_least_one_member : u8 , } # [test] fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Request () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__srv__GetInteractiveMarkers_Request > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__srv__GetInteractiveMarkers_Request > () , 1usize , concat ! ("Size of: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__srv__GetInteractiveMarkers_Request > () , 1usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . structure_needs_at_least_one_member) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request) , "::" , stringify ! (structure_needs_at_least_one_member))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence { pub data : * mut visualization_msgs__srv__GetInteractiveMarkers_Request , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence) , "::" , stringify ! (capacity))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__srv__GetInteractiveMarkers_Response { pub sequence_number : u64 , pub markers : visualization_msgs__msg__InteractiveMarker__Sequence , } # [test] fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Response () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__srv__GetInteractiveMarkers_Response > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__srv__GetInteractiveMarkers_Response > () , 32usize , concat ! ("Size of: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__srv__GetInteractiveMarkers_Response > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . sequence_number) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response) , "::" , stringify ! (sequence_number))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . markers) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response) , "::" , stringify ! (markers))) ; } # [repr (C)] # [derive (Debug)] pub struct visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence { pub data : * mut visualization_msgs__srv__GetInteractiveMarkers_Response , pub size : usize , pub capacity : usize , } # [test] fn bindgen_test_layout_visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence () { const UNINIT : :: std :: mem :: MaybeUninit < visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence , > = :: std :: mem :: MaybeUninit :: uninit () ; let ptr = UNINIT . as_ptr () ; assert_eq ! (:: std :: mem :: size_of ::< visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence > () , 24usize , concat ! ("Size of: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence))) ; assert_eq ! (:: std :: mem :: align_of ::< visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence > () , 8usize , concat ! ("Alignment of " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . data) as usize - ptr as usize } , 0usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence) , "::" , stringify ! (data))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . size) as usize - ptr as usize } , 8usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence) , "::" , stringify ! (size))) ; assert_eq ! (unsafe { :: std :: ptr :: addr_of ! ((* ptr) . capacity) as usize - ptr as usize } , 16usize , concat ! ("Offset of field: " , stringify ! (visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence) , "::" , stringify ! (capacity))) ; } extern "C" { } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalInfo () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__msg__GoalStatusArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__create () -> * mut action_msgs__msg__GoalInfo { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__destroy (msg : * mut action_msgs__msg__GoalInfo) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__Sequence__init (array : * mut action_msgs__msg__GoalInfo__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__Sequence__fini (array : * mut action_msgs__msg__GoalInfo__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__Sequence__create (size : usize ,) -> * mut action_msgs__msg__GoalInfo__Sequence { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalInfo__Sequence__destroy (array : * mut action_msgs__msg__GoalInfo__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalInfo () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__create () -> * mut action_msgs__msg__GoalStatus { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__destroy (msg : * mut action_msgs__msg__GoalStatus) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__Sequence__init (array : * mut action_msgs__msg__GoalStatus__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__Sequence__fini (array : * mut action_msgs__msg__GoalStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__Sequence__create (size : usize ,) -> * mut action_msgs__msg__GoalStatus__Sequence { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatus__Sequence__destroy (array : * mut action_msgs__msg__GoalStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__create () -> * mut action_msgs__msg__GoalStatusArray { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__destroy (msg : * mut action_msgs__msg__GoalStatusArray) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__Sequence__init (array : * mut action_msgs__msg__GoalStatusArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__Sequence__fini (array : * mut action_msgs__msg__GoalStatusArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__Sequence__create (size : usize ,) -> * mut action_msgs__msg__GoalStatusArray__Sequence { todo ! () } # [allow (unused)] pub fn action_msgs__msg__GoalStatusArray__Sequence__destroy (array : * mut action_msgs__msg__GoalStatusArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__msg__GoalStatusArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__create () -> * mut action_msgs__srv__CancelGoal_Request { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__destroy (msg : * mut action_msgs__srv__CancelGoal_Request ,) { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__Sequence__init (array : * mut action_msgs__srv__CancelGoal_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__Sequence__fini (array : * mut action_msgs__srv__CancelGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__Sequence__create (size : usize ,) -> * mut action_msgs__srv__CancelGoal_Request__Sequence { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Request__Sequence__destroy (array : * mut action_msgs__srv__CancelGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__create () -> * mut action_msgs__srv__CancelGoal_Response { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__destroy (msg : * mut action_msgs__srv__CancelGoal_Response ,) { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__Sequence__init (array : * mut action_msgs__srv__CancelGoal_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__Sequence__fini (array : * mut action_msgs__srv__CancelGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__Sequence__create (size : usize ,) -> * mut action_msgs__srv__CancelGoal_Response__Sequence { todo ! () } # [allow (unused)] pub fn action_msgs__srv__CancelGoal_Response__Sequence__destroy (array : * mut action_msgs__srv__CancelGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__action_msgs__srv__CancelGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__action_msgs__srv__CancelGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__action_msgs__srv__CancelGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Duration () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__builtin_interfaces__msg__Time () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__create () -> * mut builtin_interfaces__msg__Duration { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__destroy (msg : * mut builtin_interfaces__msg__Duration) { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__Sequence__init (array : * mut builtin_interfaces__msg__Duration__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__Sequence__fini (array : * mut builtin_interfaces__msg__Duration__Sequence ,) { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__Sequence__create (size : usize ,) -> * mut builtin_interfaces__msg__Duration__Sequence { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Duration__Sequence__destroy (array : * mut builtin_interfaces__msg__Duration__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__builtin_interfaces__msg__Duration () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__create () -> * mut builtin_interfaces__msg__Time { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__destroy (msg : * mut builtin_interfaces__msg__Time) { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__Sequence__init (array : * mut builtin_interfaces__msg__Time__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__Sequence__fini (array : * mut builtin_interfaces__msg__Time__Sequence ,) { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__Sequence__create (size : usize ,) -> * mut builtin_interfaces__msg__Time__Sequence { todo ! () } # [allow (unused)] pub fn builtin_interfaces__msg__Time__Sequence__destroy (array : * mut builtin_interfaces__msg__Time__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__builtin_interfaces__msg__Time () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__msg__KeyValue () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__create () -> * mut diagnostic_msgs__msg__DiagnosticArray { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__destroy (msg : * mut diagnostic_msgs__msg__DiagnosticArray ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__init (array : * mut diagnostic_msgs__msg__DiagnosticArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__fini (array : * mut diagnostic_msgs__msg__DiagnosticArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__msg__DiagnosticArray__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticArray__Sequence__destroy (array : * mut diagnostic_msgs__msg__DiagnosticArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__create () -> * mut diagnostic_msgs__msg__DiagnosticStatus { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__destroy (msg : * mut diagnostic_msgs__msg__DiagnosticStatus ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__init (array : * mut diagnostic_msgs__msg__DiagnosticStatus__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__fini (array : * mut diagnostic_msgs__msg__DiagnosticStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__msg__DiagnosticStatus__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__DiagnosticStatus__Sequence__destroy (array : * mut diagnostic_msgs__msg__DiagnosticStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__DiagnosticStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__create () -> * mut diagnostic_msgs__msg__KeyValue { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__destroy (msg : * mut diagnostic_msgs__msg__KeyValue) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__Sequence__init (array : * mut diagnostic_msgs__msg__KeyValue__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__Sequence__fini (array : * mut diagnostic_msgs__msg__KeyValue__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__msg__KeyValue__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__msg__KeyValue__Sequence__destroy (array : * mut diagnostic_msgs__msg__KeyValue__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__msg__KeyValue () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__create () -> * mut diagnostic_msgs__srv__AddDiagnostics_Request { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__destroy (msg : * mut diagnostic_msgs__srv__AddDiagnostics_Request ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__init (array : * mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__fini (array : * mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Request__Sequence__destroy (array : * mut diagnostic_msgs__srv__AddDiagnostics_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__create () -> * mut diagnostic_msgs__srv__AddDiagnostics_Response { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__destroy (msg : * mut diagnostic_msgs__srv__AddDiagnostics_Response ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__init (array : * mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__fini (array : * mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__AddDiagnostics_Response__Sequence__destroy (array : * mut diagnostic_msgs__srv__AddDiagnostics_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__diagnostic_msgs__srv__AddDiagnostics () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__AddDiagnostics_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__diagnostic_msgs__srv__AddDiagnostics () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__diagnostic_msgs__srv__SelfTest () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__create () -> * mut diagnostic_msgs__srv__SelfTest_Request { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__destroy (msg : * mut diagnostic_msgs__srv__SelfTest_Request ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__init (array : * mut diagnostic_msgs__srv__SelfTest_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__fini (array : * mut diagnostic_msgs__srv__SelfTest_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__srv__SelfTest_Request__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Request__Sequence__destroy (array : * mut diagnostic_msgs__srv__SelfTest_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__create () -> * mut diagnostic_msgs__srv__SelfTest_Response { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__destroy (msg : * mut diagnostic_msgs__srv__SelfTest_Response ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__init (array : * mut diagnostic_msgs__srv__SelfTest_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__fini (array : * mut diagnostic_msgs__srv__SelfTest_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__create (size : usize ,) -> * mut diagnostic_msgs__srv__SelfTest_Response__Sequence { todo ! () } # [allow (unused)] pub fn diagnostic_msgs__srv__SelfTest_Response__Sequence__destroy (array : * mut diagnostic_msgs__srv__SelfTest_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__diagnostic_msgs__srv__SelfTest_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__diagnostic_msgs__srv__SelfTest () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__create () -> * mut geometry_msgs__msg__Accel { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__destroy (msg : * mut geometry_msgs__msg__Accel) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__Sequence__init (array : * mut geometry_msgs__msg__Accel__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__Sequence__fini (array : * mut geometry_msgs__msg__Accel__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Accel__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Accel__Sequence__destroy (array : * mut geometry_msgs__msg__Accel__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Accel () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__create () -> * mut geometry_msgs__msg__AccelStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__destroy (msg : * mut geometry_msgs__msg__AccelStamped) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__Sequence__init (array : * mut geometry_msgs__msg__AccelStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__Sequence__fini (array : * mut geometry_msgs__msg__AccelStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__AccelStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelStamped__Sequence__destroy (array : * mut geometry_msgs__msg__AccelStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__create () -> * mut geometry_msgs__msg__AccelWithCovariance { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__destroy (msg : * mut geometry_msgs__msg__AccelWithCovariance ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__init (array : * mut geometry_msgs__msg__AccelWithCovariance__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__fini (array : * mut geometry_msgs__msg__AccelWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__AccelWithCovariance__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovariance__Sequence__destroy (array : * mut geometry_msgs__msg__AccelWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__create () -> * mut geometry_msgs__msg__AccelWithCovarianceStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__destroy (msg : * mut geometry_msgs__msg__AccelWithCovarianceStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__init (array : * mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__fini (array : * mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__AccelWithCovarianceStamped__Sequence__destroy (array : * mut geometry_msgs__msg__AccelWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Accel () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__AccelWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Inertia () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__InertiaStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Point () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PointStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Polygon () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PolygonStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose2D () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Pose () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Quaternion () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__QuaternionStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Transform () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TransformStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Twist () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Vector3Stamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__Wrench () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__geometry_msgs__msg__WrenchStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__create () -> * mut geometry_msgs__msg__Inertia { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__destroy (msg : * mut geometry_msgs__msg__Inertia) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__Sequence__init (array : * mut geometry_msgs__msg__Inertia__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__Sequence__fini (array : * mut geometry_msgs__msg__Inertia__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Inertia__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Inertia__Sequence__destroy (array : * mut geometry_msgs__msg__Inertia__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Inertia () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__create () -> * mut geometry_msgs__msg__InertiaStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__destroy (msg : * mut geometry_msgs__msg__InertiaStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__Sequence__init (array : * mut geometry_msgs__msg__InertiaStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__Sequence__fini (array : * mut geometry_msgs__msg__InertiaStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__InertiaStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__InertiaStamped__Sequence__destroy (array : * mut geometry_msgs__msg__InertiaStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__InertiaStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__create () -> * mut geometry_msgs__msg__Point { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__destroy (msg : * mut geometry_msgs__msg__Point) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__Sequence__init (array : * mut geometry_msgs__msg__Point__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__Sequence__fini (array : * mut geometry_msgs__msg__Point__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Point__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point__Sequence__destroy (array : * mut geometry_msgs__msg__Point__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Point () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__create () -> * mut geometry_msgs__msg__Point32 { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__destroy (msg : * mut geometry_msgs__msg__Point32) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__Sequence__init (array : * mut geometry_msgs__msg__Point32__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__Sequence__fini (array : * mut geometry_msgs__msg__Point32__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Point32__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Point32__Sequence__destroy (array : * mut geometry_msgs__msg__Point32__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Point32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__create () -> * mut geometry_msgs__msg__PointStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__destroy (msg : * mut geometry_msgs__msg__PointStamped) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__Sequence__init (array : * mut geometry_msgs__msg__PointStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__Sequence__fini (array : * mut geometry_msgs__msg__PointStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PointStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PointStamped__Sequence__destroy (array : * mut geometry_msgs__msg__PointStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PointStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__create () -> * mut geometry_msgs__msg__Polygon { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__destroy (msg : * mut geometry_msgs__msg__Polygon) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__Sequence__init (array : * mut geometry_msgs__msg__Polygon__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__Sequence__fini (array : * mut geometry_msgs__msg__Polygon__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Polygon__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Polygon__Sequence__destroy (array : * mut geometry_msgs__msg__Polygon__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Polygon () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__create () -> * mut geometry_msgs__msg__PolygonStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__destroy (msg : * mut geometry_msgs__msg__PolygonStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__Sequence__init (array : * mut geometry_msgs__msg__PolygonStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__Sequence__fini (array : * mut geometry_msgs__msg__PolygonStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PolygonStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PolygonStamped__Sequence__destroy (array : * mut geometry_msgs__msg__PolygonStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PolygonStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__create () -> * mut geometry_msgs__msg__Pose { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__destroy (msg : * mut geometry_msgs__msg__Pose) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__Sequence__init (array : * mut geometry_msgs__msg__Pose__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__Sequence__fini (array : * mut geometry_msgs__msg__Pose__Sequence) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Pose__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose__Sequence__destroy (array : * mut geometry_msgs__msg__Pose__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Pose () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__create () -> * mut geometry_msgs__msg__Pose2D { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__destroy (msg : * mut geometry_msgs__msg__Pose2D) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__Sequence__init (array : * mut geometry_msgs__msg__Pose2D__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__Sequence__fini (array : * mut geometry_msgs__msg__Pose2D__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Pose2D__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Pose2D__Sequence__destroy (array : * mut geometry_msgs__msg__Pose2D__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Pose2D () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__create () -> * mut geometry_msgs__msg__PoseArray { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__destroy (msg : * mut geometry_msgs__msg__PoseArray) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__Sequence__init (array : * mut geometry_msgs__msg__PoseArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__Sequence__fini (array : * mut geometry_msgs__msg__PoseArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PoseArray__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseArray__Sequence__destroy (array : * mut geometry_msgs__msg__PoseArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__create () -> * mut geometry_msgs__msg__PoseStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__destroy (msg : * mut geometry_msgs__msg__PoseStamped) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__Sequence__init (array : * mut geometry_msgs__msg__PoseStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__Sequence__fini (array : * mut geometry_msgs__msg__PoseStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PoseStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseStamped__Sequence__destroy (array : * mut geometry_msgs__msg__PoseStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__create () -> * mut geometry_msgs__msg__PoseWithCovariance { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__destroy (msg : * mut geometry_msgs__msg__PoseWithCovariance ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__init (array : * mut geometry_msgs__msg__PoseWithCovariance__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__fini (array : * mut geometry_msgs__msg__PoseWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PoseWithCovariance__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovariance__Sequence__destroy (array : * mut geometry_msgs__msg__PoseWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__create () -> * mut geometry_msgs__msg__PoseWithCovarianceStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__destroy (msg : * mut geometry_msgs__msg__PoseWithCovarianceStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__init (array : * mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__fini (array : * mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__PoseWithCovarianceStamped__Sequence__destroy (array : * mut geometry_msgs__msg__PoseWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__PoseWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__create () -> * mut geometry_msgs__msg__Quaternion { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__destroy (msg : * mut geometry_msgs__msg__Quaternion) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__Sequence__init (array : * mut geometry_msgs__msg__Quaternion__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__Sequence__fini (array : * mut geometry_msgs__msg__Quaternion__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Quaternion__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Quaternion__Sequence__destroy (array : * mut geometry_msgs__msg__Quaternion__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Quaternion () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__create () -> * mut geometry_msgs__msg__QuaternionStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__destroy (msg : * mut geometry_msgs__msg__QuaternionStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__Sequence__init (array : * mut geometry_msgs__msg__QuaternionStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__Sequence__fini (array : * mut geometry_msgs__msg__QuaternionStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__QuaternionStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__QuaternionStamped__Sequence__destroy (array : * mut geometry_msgs__msg__QuaternionStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__QuaternionStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__create () -> * mut geometry_msgs__msg__Transform { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__destroy (msg : * mut geometry_msgs__msg__Transform) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__Sequence__init (array : * mut geometry_msgs__msg__Transform__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__Sequence__fini (array : * mut geometry_msgs__msg__Transform__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Transform__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Transform__Sequence__destroy (array : * mut geometry_msgs__msg__Transform__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Transform () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__create () -> * mut geometry_msgs__msg__TransformStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__destroy (msg : * mut geometry_msgs__msg__TransformStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__Sequence__init (array : * mut geometry_msgs__msg__TransformStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__Sequence__fini (array : * mut geometry_msgs__msg__TransformStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__TransformStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TransformStamped__Sequence__destroy (array : * mut geometry_msgs__msg__TransformStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TransformStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__create () -> * mut geometry_msgs__msg__Twist { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__destroy (msg : * mut geometry_msgs__msg__Twist) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__Sequence__init (array : * mut geometry_msgs__msg__Twist__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__Sequence__fini (array : * mut geometry_msgs__msg__Twist__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Twist__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Twist__Sequence__destroy (array : * mut geometry_msgs__msg__Twist__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Twist () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__create () -> * mut geometry_msgs__msg__TwistStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__destroy (msg : * mut geometry_msgs__msg__TwistStamped) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__Sequence__init (array : * mut geometry_msgs__msg__TwistStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__Sequence__fini (array : * mut geometry_msgs__msg__TwistStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__TwistStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistStamped__Sequence__destroy (array : * mut geometry_msgs__msg__TwistStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__create () -> * mut geometry_msgs__msg__TwistWithCovariance { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__destroy (msg : * mut geometry_msgs__msg__TwistWithCovariance ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__init (array : * mut geometry_msgs__msg__TwistWithCovariance__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__fini (array : * mut geometry_msgs__msg__TwistWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__TwistWithCovariance__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovariance__Sequence__destroy (array : * mut geometry_msgs__msg__TwistWithCovariance__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovariance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__create () -> * mut geometry_msgs__msg__TwistWithCovarianceStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__destroy (msg : * mut geometry_msgs__msg__TwistWithCovarianceStamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__init (array : * mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__fini (array : * mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__TwistWithCovarianceStamped__Sequence__destroy (array : * mut geometry_msgs__msg__TwistWithCovarianceStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__TwistWithCovarianceStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__create () -> * mut geometry_msgs__msg__Vector3 { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__destroy (msg : * mut geometry_msgs__msg__Vector3) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__Sequence__init (array : * mut geometry_msgs__msg__Vector3__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__Sequence__fini (array : * mut geometry_msgs__msg__Vector3__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Vector3__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3__Sequence__destroy (array : * mut geometry_msgs__msg__Vector3__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Vector3 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__create () -> * mut geometry_msgs__msg__Vector3Stamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__destroy (msg : * mut geometry_msgs__msg__Vector3Stamped ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__Sequence__init (array : * mut geometry_msgs__msg__Vector3Stamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__Sequence__fini (array : * mut geometry_msgs__msg__Vector3Stamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Vector3Stamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Vector3Stamped__Sequence__destroy (array : * mut geometry_msgs__msg__Vector3Stamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Vector3Stamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__create () -> * mut geometry_msgs__msg__Wrench { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__destroy (msg : * mut geometry_msgs__msg__Wrench) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__Sequence__init (array : * mut geometry_msgs__msg__Wrench__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__Sequence__fini (array : * mut geometry_msgs__msg__Wrench__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__Wrench__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__Wrench__Sequence__destroy (array : * mut geometry_msgs__msg__Wrench__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__Wrench () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__create () -> * mut geometry_msgs__msg__WrenchStamped { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__destroy (msg : * mut geometry_msgs__msg__WrenchStamped) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__Sequence__init (array : * mut geometry_msgs__msg__WrenchStamped__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__Sequence__fini (array : * mut geometry_msgs__msg__WrenchStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__Sequence__create (size : usize ,) -> * mut geometry_msgs__msg__WrenchStamped__Sequence { todo ! () } # [allow (unused)] pub fn geometry_msgs__msg__WrenchStamped__Sequence__destroy (array : * mut geometry_msgs__msg__WrenchStamped__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__geometry_msgs__msg__WrenchStamped () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__State () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__Transition () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionDescription () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionEvent () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__create () -> * mut lifecycle_msgs__msg__State { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__destroy (msg : * mut lifecycle_msgs__msg__State) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__Sequence__init (array : * mut lifecycle_msgs__msg__State__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__Sequence__fini (array : * mut lifecycle_msgs__msg__State__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__msg__State__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__State__Sequence__destroy (array : * mut lifecycle_msgs__msg__State__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__State () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__create () -> * mut lifecycle_msgs__msg__Transition { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__destroy (msg : * mut lifecycle_msgs__msg__Transition) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__Sequence__init (array : * mut lifecycle_msgs__msg__Transition__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__Sequence__fini (array : * mut lifecycle_msgs__msg__Transition__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__msg__Transition__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__Transition__Sequence__destroy (array : * mut lifecycle_msgs__msg__Transition__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__Transition () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__create () -> * mut lifecycle_msgs__msg__TransitionDescription { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__destroy (msg : * mut lifecycle_msgs__msg__TransitionDescription ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__init (array : * mut lifecycle_msgs__msg__TransitionDescription__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__fini (array : * mut lifecycle_msgs__msg__TransitionDescription__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__msg__TransitionDescription__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionDescription__Sequence__destroy (array : * mut lifecycle_msgs__msg__TransitionDescription__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionDescription () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__create () -> * mut lifecycle_msgs__msg__TransitionEvent { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__destroy (msg : * mut lifecycle_msgs__msg__TransitionEvent ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__init (array : * mut lifecycle_msgs__msg__TransitionEvent__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__fini (array : * mut lifecycle_msgs__msg__TransitionEvent__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__msg__TransitionEvent__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__msg__TransitionEvent__Sequence__destroy (array : * mut lifecycle_msgs__msg__TransitionEvent__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__msg__TransitionEvent () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__create () -> * mut lifecycle_msgs__srv__ChangeState_Request { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__destroy (msg : * mut lifecycle_msgs__srv__ChangeState_Request ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__init (array : * mut lifecycle_msgs__srv__ChangeState_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__fini (array : * mut lifecycle_msgs__srv__ChangeState_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__ChangeState_Request__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Request__Sequence__destroy (array : * mut lifecycle_msgs__srv__ChangeState_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__create () -> * mut lifecycle_msgs__srv__ChangeState_Response { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__destroy (msg : * mut lifecycle_msgs__srv__ChangeState_Response ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__init (array : * mut lifecycle_msgs__srv__ChangeState_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__fini (array : * mut lifecycle_msgs__srv__ChangeState_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__ChangeState_Response__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__ChangeState_Response__Sequence__destroy (array : * mut lifecycle_msgs__srv__ChangeState_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__ChangeState () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__ChangeState_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__ChangeState () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableStates () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__lifecycle_msgs__srv__GetState () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__create () -> * mut lifecycle_msgs__srv__GetAvailableStates_Request { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__destroy (msg : * mut lifecycle_msgs__srv__GetAvailableStates_Request ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__init (array : * mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__fini (array : * mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Request__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetAvailableStates_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__create () -> * mut lifecycle_msgs__srv__GetAvailableStates_Response { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__destroy (msg : * mut lifecycle_msgs__srv__GetAvailableStates_Response ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__init (array : * mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__fini (array : * mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableStates_Response__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetAvailableStates_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableStates_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableStates () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__create () -> * mut lifecycle_msgs__srv__GetAvailableTransitions_Request { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__destroy (msg : * mut lifecycle_msgs__srv__GetAvailableTransitions_Request ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__init (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__fini (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__create () -> * mut lifecycle_msgs__srv__GetAvailableTransitions_Response { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__destroy (msg : * mut lifecycle_msgs__srv__GetAvailableTransitions_Response ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__init (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__fini (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__create () -> * mut lifecycle_msgs__srv__GetState_Request { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__destroy (msg : * mut lifecycle_msgs__srv__GetState_Request ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__Sequence__init (array : * mut lifecycle_msgs__srv__GetState_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__Sequence__fini (array : * mut lifecycle_msgs__srv__GetState_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetState_Request__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Request__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetState_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__create () -> * mut lifecycle_msgs__srv__GetState_Response { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__destroy (msg : * mut lifecycle_msgs__srv__GetState_Response ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__Sequence__init (array : * mut lifecycle_msgs__srv__GetState_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__Sequence__fini (array : * mut lifecycle_msgs__srv__GetState_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__Sequence__create (size : usize ,) -> * mut lifecycle_msgs__srv__GetState_Response__Sequence { todo ! () } # [allow (unused)] pub fn lifecycle_msgs__srv__GetState_Response__Sequence__destroy (array : * mut lifecycle_msgs__srv__GetState_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetState_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetState () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__GridCells () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__MapMetaData () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__OccupancyGrid () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Odometry () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__msg__Path () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__create () -> * mut nav_msgs__msg__GridCells { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__destroy (msg : * mut nav_msgs__msg__GridCells) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__Sequence__init (array : * mut nav_msgs__msg__GridCells__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__Sequence__fini (array : * mut nav_msgs__msg__GridCells__Sequence) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__Sequence__create (size : usize ,) -> * mut nav_msgs__msg__GridCells__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__GridCells__Sequence__destroy (array : * mut nav_msgs__msg__GridCells__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__GridCells () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__create () -> * mut nav_msgs__msg__MapMetaData { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__destroy (msg : * mut nav_msgs__msg__MapMetaData) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__Sequence__init (array : * mut nav_msgs__msg__MapMetaData__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__Sequence__fini (array : * mut nav_msgs__msg__MapMetaData__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__Sequence__create (size : usize ,) -> * mut nav_msgs__msg__MapMetaData__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__MapMetaData__Sequence__destroy (array : * mut nav_msgs__msg__MapMetaData__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__MapMetaData () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__create () -> * mut nav_msgs__msg__OccupancyGrid { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__destroy (msg : * mut nav_msgs__msg__OccupancyGrid) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__Sequence__init (array : * mut nav_msgs__msg__OccupancyGrid__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__Sequence__fini (array : * mut nav_msgs__msg__OccupancyGrid__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__Sequence__create (size : usize ,) -> * mut nav_msgs__msg__OccupancyGrid__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__OccupancyGrid__Sequence__destroy (array : * mut nav_msgs__msg__OccupancyGrid__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__OccupancyGrid () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__create () -> * mut nav_msgs__msg__Odometry { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__destroy (msg : * mut nav_msgs__msg__Odometry) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__Sequence__init (array : * mut nav_msgs__msg__Odometry__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__Sequence__fini (array : * mut nav_msgs__msg__Odometry__Sequence) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__Sequence__create (size : usize ,) -> * mut nav_msgs__msg__Odometry__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Odometry__Sequence__destroy (array : * mut nav_msgs__msg__Odometry__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__Odometry () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__create () -> * mut nav_msgs__msg__Path { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__destroy (msg : * mut nav_msgs__msg__Path) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__Sequence__init (array : * mut nav_msgs__msg__Path__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__Sequence__fini (array : * mut nav_msgs__msg__Path__Sequence) { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__Sequence__create (size : usize) -> * mut nav_msgs__msg__Path__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__msg__Path__Sequence__destroy (array : * mut nav_msgs__msg__Path__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__msg__Path () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__GetMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__GetPlan () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__LoadMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__nav_msgs__srv__SetMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__create () -> * mut nav_msgs__srv__GetMap_Request { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__destroy (msg : * mut nav_msgs__srv__GetMap_Request) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__Sequence__init (array : * mut nav_msgs__srv__GetMap_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__Sequence__fini (array : * mut nav_msgs__srv__GetMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__GetMap_Request__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Request__Sequence__destroy (array : * mut nav_msgs__srv__GetMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__create () -> * mut nav_msgs__srv__GetMap_Response { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__destroy (msg : * mut nav_msgs__srv__GetMap_Response) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__Sequence__init (array : * mut nav_msgs__srv__GetMap_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__Sequence__fini (array : * mut nav_msgs__srv__GetMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__GetMap_Response__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetMap_Response__Sequence__destroy (array : * mut nav_msgs__srv__GetMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__GetMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__create () -> * mut nav_msgs__srv__GetPlan_Request { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__destroy (msg : * mut nav_msgs__srv__GetPlan_Request) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__Sequence__init (array : * mut nav_msgs__srv__GetPlan_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__Sequence__fini (array : * mut nav_msgs__srv__GetPlan_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__GetPlan_Request__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Request__Sequence__destroy (array : * mut nav_msgs__srv__GetPlan_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__create () -> * mut nav_msgs__srv__GetPlan_Response { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__destroy (msg : * mut nav_msgs__srv__GetPlan_Response) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__Sequence__init (array : * mut nav_msgs__srv__GetPlan_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__Sequence__fini (array : * mut nav_msgs__srv__GetPlan_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__GetPlan_Response__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__GetPlan_Response__Sequence__destroy (array : * mut nav_msgs__srv__GetPlan_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__GetPlan_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__GetPlan () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__create () -> * mut nav_msgs__srv__LoadMap_Request { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__destroy (msg : * mut nav_msgs__srv__LoadMap_Request) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__Sequence__init (array : * mut nav_msgs__srv__LoadMap_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__Sequence__fini (array : * mut nav_msgs__srv__LoadMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__LoadMap_Request__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Request__Sequence__destroy (array : * mut nav_msgs__srv__LoadMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__create () -> * mut nav_msgs__srv__LoadMap_Response { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__destroy (msg : * mut nav_msgs__srv__LoadMap_Response) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__Sequence__init (array : * mut nav_msgs__srv__LoadMap_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__Sequence__fini (array : * mut nav_msgs__srv__LoadMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__LoadMap_Response__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__LoadMap_Response__Sequence__destroy (array : * mut nav_msgs__srv__LoadMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__LoadMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__LoadMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__create () -> * mut nav_msgs__srv__SetMap_Request { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__destroy (msg : * mut nav_msgs__srv__SetMap_Request) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__Sequence__init (array : * mut nav_msgs__srv__SetMap_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__Sequence__fini (array : * mut nav_msgs__srv__SetMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__SetMap_Request__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Request__Sequence__destroy (array : * mut nav_msgs__srv__SetMap_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__create () -> * mut nav_msgs__srv__SetMap_Response { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__destroy (msg : * mut nav_msgs__srv__SetMap_Response) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__Sequence__init (array : * mut nav_msgs__srv__SetMap_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__Sequence__fini (array : * mut nav_msgs__srv__SetMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__Sequence__create (size : usize ,) -> * mut nav_msgs__srv__SetMap_Response__Sequence { todo ! () } # [allow (unused)] pub fn nav_msgs__srv__SetMap_Response__Sequence__destroy (array : * mut nav_msgs__srv__SetMap_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__nav_msgs__srv__SetMap_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__nav_msgs__srv__SetMap () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__FloatingPointRange () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__IntegerRange () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ListParametersResult () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Log () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__Parameter () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterDescriptor () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEvent () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEventDescriptors () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterType () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterValue () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__msg__SetParametersResult () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__create () -> * mut rcl_interfaces__msg__FloatingPointRange { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__destroy (msg : * mut rcl_interfaces__msg__FloatingPointRange ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__init (array : * mut rcl_interfaces__msg__FloatingPointRange__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__fini (array : * mut rcl_interfaces__msg__FloatingPointRange__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__FloatingPointRange__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__FloatingPointRange__Sequence__destroy (array : * mut rcl_interfaces__msg__FloatingPointRange__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__FloatingPointRange () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__create () -> * mut rcl_interfaces__msg__IntegerRange { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__destroy (msg : * mut rcl_interfaces__msg__IntegerRange) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__Sequence__init (array : * mut rcl_interfaces__msg__IntegerRange__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__Sequence__fini (array : * mut rcl_interfaces__msg__IntegerRange__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__IntegerRange__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__IntegerRange__Sequence__destroy (array : * mut rcl_interfaces__msg__IntegerRange__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__IntegerRange () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__create () -> * mut rcl_interfaces__msg__ListParametersResult { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__destroy (msg : * mut rcl_interfaces__msg__ListParametersResult ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__Sequence__init (array : * mut rcl_interfaces__msg__ListParametersResult__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__Sequence__fini (array : * mut rcl_interfaces__msg__ListParametersResult__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ListParametersResult__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ListParametersResult__Sequence__destroy (array : * mut rcl_interfaces__msg__ListParametersResult__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ListParametersResult () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__create () -> * mut rcl_interfaces__msg__Log { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__destroy (msg : * mut rcl_interfaces__msg__Log) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__Sequence__init (array : * mut rcl_interfaces__msg__Log__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__Sequence__fini (array : * mut rcl_interfaces__msg__Log__Sequence) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__Log__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Log__Sequence__destroy (array : * mut rcl_interfaces__msg__Log__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__Log () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__create () -> * mut rcl_interfaces__msg__Parameter { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__destroy (msg : * mut rcl_interfaces__msg__Parameter) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__Sequence__init (array : * mut rcl_interfaces__msg__Parameter__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__Sequence__fini (array : * mut rcl_interfaces__msg__Parameter__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__Parameter__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__Parameter__Sequence__destroy (array : * mut rcl_interfaces__msg__Parameter__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__Parameter () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__create () -> * mut rcl_interfaces__msg__ParameterDescriptor { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__destroy (msg : * mut rcl_interfaces__msg__ParameterDescriptor ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__init (array : * mut rcl_interfaces__msg__ParameterDescriptor__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__fini (array : * mut rcl_interfaces__msg__ParameterDescriptor__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ParameterDescriptor__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterDescriptor__Sequence__destroy (array : * mut rcl_interfaces__msg__ParameterDescriptor__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterDescriptor () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__create () -> * mut rcl_interfaces__msg__ParameterEvent { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__destroy (msg : * mut rcl_interfaces__msg__ParameterEvent ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__Sequence__init (array : * mut rcl_interfaces__msg__ParameterEvent__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__Sequence__fini (array : * mut rcl_interfaces__msg__ParameterEvent__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ParameterEvent__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEvent__Sequence__destroy (array : * mut rcl_interfaces__msg__ParameterEvent__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEvent () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__create () -> * mut rcl_interfaces__msg__ParameterEventDescriptors { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__destroy (msg : * mut rcl_interfaces__msg__ParameterEventDescriptors ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__init (array : * mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__fini (array : * mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterEventDescriptors__Sequence__destroy (array : * mut rcl_interfaces__msg__ParameterEventDescriptors__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterEventDescriptors () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__create () -> * mut rcl_interfaces__msg__ParameterType { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__destroy (msg : * mut rcl_interfaces__msg__ParameterType ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__Sequence__init (array : * mut rcl_interfaces__msg__ParameterType__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__Sequence__fini (array : * mut rcl_interfaces__msg__ParameterType__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ParameterType__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterType__Sequence__destroy (array : * mut rcl_interfaces__msg__ParameterType__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterType () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__create () -> * mut rcl_interfaces__msg__ParameterValue { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__destroy (msg : * mut rcl_interfaces__msg__ParameterValue ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__Sequence__init (array : * mut rcl_interfaces__msg__ParameterValue__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__Sequence__fini (array : * mut rcl_interfaces__msg__ParameterValue__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__ParameterValue__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__ParameterValue__Sequence__destroy (array : * mut rcl_interfaces__msg__ParameterValue__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__ParameterValue () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__create () -> * mut rcl_interfaces__msg__SetParametersResult { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__destroy (msg : * mut rcl_interfaces__msg__SetParametersResult ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__Sequence__init (array : * mut rcl_interfaces__msg__SetParametersResult__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__Sequence__fini (array : * mut rcl_interfaces__msg__SetParametersResult__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__Sequence__create (size : usize ,) -> * mut rcl_interfaces__msg__SetParametersResult__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__msg__SetParametersResult__Sequence__destroy (array : * mut rcl_interfaces__msg__SetParametersResult__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__msg__SetParametersResult () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__create () -> * mut rcl_interfaces__srv__DescribeParameters_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__destroy (msg : * mut rcl_interfaces__srv__DescribeParameters_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__init (array : * mut rcl_interfaces__srv__DescribeParameters_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__fini (array : * mut rcl_interfaces__srv__DescribeParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__DescribeParameters_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__DescribeParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__create () -> * mut rcl_interfaces__srv__DescribeParameters_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__destroy (msg : * mut rcl_interfaces__srv__DescribeParameters_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__init (array : * mut rcl_interfaces__srv__DescribeParameters_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__fini (array : * mut rcl_interfaces__srv__DescribeParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__DescribeParameters_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__DescribeParameters_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__DescribeParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__DescribeParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__DescribeParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__DescribeParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameterTypes () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__ListParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__SetParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__rcl_interfaces__srv__SetParametersAtomically () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__create () -> * mut rcl_interfaces__srv__GetParameterTypes_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__destroy (msg : * mut rcl_interfaces__srv__GetParameterTypes_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__init (array : * mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__fini (array : * mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__GetParameterTypes_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__create () -> * mut rcl_interfaces__srv__GetParameterTypes_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__destroy (msg : * mut rcl_interfaces__srv__GetParameterTypes_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__init (array : * mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__fini (array : * mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameterTypes_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__GetParameterTypes_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameterTypes_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameterTypes () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__create () -> * mut rcl_interfaces__srv__GetParameters_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__destroy (msg : * mut rcl_interfaces__srv__GetParameters_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__init (array : * mut rcl_interfaces__srv__GetParameters_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__fini (array : * mut rcl_interfaces__srv__GetParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__GetParameters_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__GetParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__create () -> * mut rcl_interfaces__srv__GetParameters_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__destroy (msg : * mut rcl_interfaces__srv__GetParameters_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__init (array : * mut rcl_interfaces__srv__GetParameters_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__fini (array : * mut rcl_interfaces__srv__GetParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__GetParameters_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__GetParameters_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__GetParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__GetParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__GetParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__create () -> * mut rcl_interfaces__srv__ListParameters_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__destroy (msg : * mut rcl_interfaces__srv__ListParameters_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__init (array : * mut rcl_interfaces__srv__ListParameters_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__fini (array : * mut rcl_interfaces__srv__ListParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__ListParameters_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__ListParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__create () -> * mut rcl_interfaces__srv__ListParameters_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__destroy (msg : * mut rcl_interfaces__srv__ListParameters_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__init (array : * mut rcl_interfaces__srv__ListParameters_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__fini (array : * mut rcl_interfaces__srv__ListParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__ListParameters_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__ListParameters_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__ListParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__ListParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__ListParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__create () -> * mut rcl_interfaces__srv__SetParameters_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__destroy (msg : * mut rcl_interfaces__srv__SetParameters_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__init (array : * mut rcl_interfaces__srv__SetParameters_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__fini (array : * mut rcl_interfaces__srv__SetParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__SetParameters_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__SetParameters_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__create () -> * mut rcl_interfaces__srv__SetParameters_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__destroy (msg : * mut rcl_interfaces__srv__SetParameters_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__init (array : * mut rcl_interfaces__srv__SetParameters_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__fini (array : * mut rcl_interfaces__srv__SetParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__SetParameters_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParameters_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__SetParameters_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParameters_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__SetParameters () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__create () -> * mut rcl_interfaces__srv__SetParametersAtomically_Request { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__destroy (msg : * mut rcl_interfaces__srv__SetParametersAtomically_Request ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__init (array : * mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__fini (array : * mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Request__Sequence__destroy (array : * mut rcl_interfaces__srv__SetParametersAtomically_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__create () -> * mut rcl_interfaces__srv__SetParametersAtomically_Response { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__destroy (msg : * mut rcl_interfaces__srv__SetParametersAtomically_Response ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__init (array : * mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__fini (array : * mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__create (size : usize ,) -> * mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence { todo ! () } # [allow (unused)] pub fn rcl_interfaces__srv__SetParametersAtomically_Response__Sequence__destroy (array : * mut rcl_interfaces__srv__SetParametersAtomically_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rcl_interfaces__srv__SetParametersAtomically_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__rcl_interfaces__srv__SetParametersAtomically () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__create () -> * mut rosgraph_msgs__msg__Clock { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__destroy (msg : * mut rosgraph_msgs__msg__Clock) { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__Sequence__init (array : * mut rosgraph_msgs__msg__Clock__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__Sequence__fini (array : * mut rosgraph_msgs__msg__Clock__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__Sequence__create (size : usize ,) -> * mut rosgraph_msgs__msg__Clock__Sequence { todo ! () } # [allow (unused)] pub fn rosgraph_msgs__msg__Clock__Sequence__destroy (array : * mut rosgraph_msgs__msg__Clock__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__rosgraph_msgs__msg__Clock () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__rosgraph_msgs__msg__Clock () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__create () -> * mut sensor_msgs__msg__BatteryState { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__destroy (msg : * mut sensor_msgs__msg__BatteryState) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__Sequence__init (array : * mut sensor_msgs__msg__BatteryState__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__Sequence__fini (array : * mut sensor_msgs__msg__BatteryState__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__BatteryState__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__BatteryState__Sequence__destroy (array : * mut sensor_msgs__msg__BatteryState__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__BatteryState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__create () -> * mut sensor_msgs__msg__CameraInfo { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__destroy (msg : * mut sensor_msgs__msg__CameraInfo) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__Sequence__init (array : * mut sensor_msgs__msg__CameraInfo__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__Sequence__fini (array : * mut sensor_msgs__msg__CameraInfo__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__CameraInfo__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CameraInfo__Sequence__destroy (array : * mut sensor_msgs__msg__CameraInfo__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__CameraInfo () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__create () -> * mut sensor_msgs__msg__ChannelFloat32 { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__destroy (msg : * mut sensor_msgs__msg__ChannelFloat32) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__Sequence__init (array : * mut sensor_msgs__msg__ChannelFloat32__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__Sequence__fini (array : * mut sensor_msgs__msg__ChannelFloat32__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__ChannelFloat32__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__ChannelFloat32__Sequence__destroy (array : * mut sensor_msgs__msg__ChannelFloat32__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__ChannelFloat32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__create () -> * mut sensor_msgs__msg__CompressedImage { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__destroy (msg : * mut sensor_msgs__msg__CompressedImage) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__Sequence__init (array : * mut sensor_msgs__msg__CompressedImage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__Sequence__fini (array : * mut sensor_msgs__msg__CompressedImage__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__CompressedImage__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__CompressedImage__Sequence__destroy (array : * mut sensor_msgs__msg__CompressedImage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__CompressedImage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__BatteryState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CameraInfo () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__ChannelFloat32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__CompressedImage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__FluidPressure () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Illuminance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Image () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Imu () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JointState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Joy () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedbackArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserEcho () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__LaserScan () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MagneticField () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiDOFJointState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__MultiEchoLaserScan () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatFix () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__NavSatStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud2 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__PointField () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Range () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RegionOfInterest () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__RelativeHumidity () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__Temperature () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__msg__TimeReference () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__create () -> * mut sensor_msgs__msg__FluidPressure { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__destroy (msg : * mut sensor_msgs__msg__FluidPressure) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__Sequence__init (array : * mut sensor_msgs__msg__FluidPressure__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__Sequence__fini (array : * mut sensor_msgs__msg__FluidPressure__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__FluidPressure__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__FluidPressure__Sequence__destroy (array : * mut sensor_msgs__msg__FluidPressure__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__FluidPressure () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__create () -> * mut sensor_msgs__msg__Illuminance { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__destroy (msg : * mut sensor_msgs__msg__Illuminance) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__Sequence__init (array : * mut sensor_msgs__msg__Illuminance__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__Sequence__fini (array : * mut sensor_msgs__msg__Illuminance__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Illuminance__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Illuminance__Sequence__destroy (array : * mut sensor_msgs__msg__Illuminance__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Illuminance () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__create () -> * mut sensor_msgs__msg__Image { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__destroy (msg : * mut sensor_msgs__msg__Image) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__Sequence__init (array : * mut sensor_msgs__msg__Image__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__Sequence__fini (array : * mut sensor_msgs__msg__Image__Sequence) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Image__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Image__Sequence__destroy (array : * mut sensor_msgs__msg__Image__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Image () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__create () -> * mut sensor_msgs__msg__Imu { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__destroy (msg : * mut sensor_msgs__msg__Imu) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__Sequence__init (array : * mut sensor_msgs__msg__Imu__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__Sequence__fini (array : * mut sensor_msgs__msg__Imu__Sequence) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Imu__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Imu__Sequence__destroy (array : * mut sensor_msgs__msg__Imu__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Imu () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__create () -> * mut sensor_msgs__msg__JointState { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__destroy (msg : * mut sensor_msgs__msg__JointState) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__Sequence__init (array : * mut sensor_msgs__msg__JointState__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__Sequence__fini (array : * mut sensor_msgs__msg__JointState__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__JointState__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JointState__Sequence__destroy (array : * mut sensor_msgs__msg__JointState__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JointState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__create () -> * mut sensor_msgs__msg__Joy { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__destroy (msg : * mut sensor_msgs__msg__Joy) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__Sequence__init (array : * mut sensor_msgs__msg__Joy__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__Sequence__fini (array : * mut sensor_msgs__msg__Joy__Sequence) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Joy__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Joy__Sequence__destroy (array : * mut sensor_msgs__msg__Joy__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Joy () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__create () -> * mut sensor_msgs__msg__JoyFeedback { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__destroy (msg : * mut sensor_msgs__msg__JoyFeedback) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__Sequence__init (array : * mut sensor_msgs__msg__JoyFeedback__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__Sequence__fini (array : * mut sensor_msgs__msg__JoyFeedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__JoyFeedback__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedback__Sequence__destroy (array : * mut sensor_msgs__msg__JoyFeedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__create () -> * mut sensor_msgs__msg__JoyFeedbackArray { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__destroy (msg : * mut sensor_msgs__msg__JoyFeedbackArray ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__init (array : * mut sensor_msgs__msg__JoyFeedbackArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__fini (array : * mut sensor_msgs__msg__JoyFeedbackArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__JoyFeedbackArray__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__JoyFeedbackArray__Sequence__destroy (array : * mut sensor_msgs__msg__JoyFeedbackArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__JoyFeedbackArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__create () -> * mut sensor_msgs__msg__LaserEcho { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__destroy (msg : * mut sensor_msgs__msg__LaserEcho) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__Sequence__init (array : * mut sensor_msgs__msg__LaserEcho__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__Sequence__fini (array : * mut sensor_msgs__msg__LaserEcho__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__LaserEcho__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserEcho__Sequence__destroy (array : * mut sensor_msgs__msg__LaserEcho__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__LaserEcho () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__create () -> * mut sensor_msgs__msg__LaserScan { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__destroy (msg : * mut sensor_msgs__msg__LaserScan) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__Sequence__init (array : * mut sensor_msgs__msg__LaserScan__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__Sequence__fini (array : * mut sensor_msgs__msg__LaserScan__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__LaserScan__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__LaserScan__Sequence__destroy (array : * mut sensor_msgs__msg__LaserScan__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__LaserScan () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__create () -> * mut sensor_msgs__msg__MagneticField { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__destroy (msg : * mut sensor_msgs__msg__MagneticField) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__Sequence__init (array : * mut sensor_msgs__msg__MagneticField__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__Sequence__fini (array : * mut sensor_msgs__msg__MagneticField__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__MagneticField__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MagneticField__Sequence__destroy (array : * mut sensor_msgs__msg__MagneticField__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MagneticField () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__create () -> * mut sensor_msgs__msg__MultiDOFJointState { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__destroy (msg : * mut sensor_msgs__msg__MultiDOFJointState ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__init (array : * mut sensor_msgs__msg__MultiDOFJointState__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__fini (array : * mut sensor_msgs__msg__MultiDOFJointState__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__MultiDOFJointState__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiDOFJointState__Sequence__destroy (array : * mut sensor_msgs__msg__MultiDOFJointState__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MultiDOFJointState () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__create () -> * mut sensor_msgs__msg__MultiEchoLaserScan { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__destroy (msg : * mut sensor_msgs__msg__MultiEchoLaserScan ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__init (array : * mut sensor_msgs__msg__MultiEchoLaserScan__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__fini (array : * mut sensor_msgs__msg__MultiEchoLaserScan__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__MultiEchoLaserScan__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__MultiEchoLaserScan__Sequence__destroy (array : * mut sensor_msgs__msg__MultiEchoLaserScan__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__MultiEchoLaserScan () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__create () -> * mut sensor_msgs__msg__NavSatFix { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__destroy (msg : * mut sensor_msgs__msg__NavSatFix) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__Sequence__init (array : * mut sensor_msgs__msg__NavSatFix__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__Sequence__fini (array : * mut sensor_msgs__msg__NavSatFix__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__NavSatFix__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatFix__Sequence__destroy (array : * mut sensor_msgs__msg__NavSatFix__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__NavSatFix () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__create () -> * mut sensor_msgs__msg__NavSatStatus { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__destroy (msg : * mut sensor_msgs__msg__NavSatStatus) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__Sequence__init (array : * mut sensor_msgs__msg__NavSatStatus__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__Sequence__fini (array : * mut sensor_msgs__msg__NavSatStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__NavSatStatus__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__NavSatStatus__Sequence__destroy (array : * mut sensor_msgs__msg__NavSatStatus__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__NavSatStatus () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__create () -> * mut sensor_msgs__msg__PointCloud { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__destroy (msg : * mut sensor_msgs__msg__PointCloud) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__Sequence__init (array : * mut sensor_msgs__msg__PointCloud__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__Sequence__fini (array : * mut sensor_msgs__msg__PointCloud__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__PointCloud__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud__Sequence__destroy (array : * mut sensor_msgs__msg__PointCloud__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__create () -> * mut sensor_msgs__msg__PointCloud2 { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__destroy (msg : * mut sensor_msgs__msg__PointCloud2) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__Sequence__init (array : * mut sensor_msgs__msg__PointCloud2__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__Sequence__fini (array : * mut sensor_msgs__msg__PointCloud2__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__PointCloud2__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointCloud2__Sequence__destroy (array : * mut sensor_msgs__msg__PointCloud2__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointCloud2 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__create () -> * mut sensor_msgs__msg__PointField { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__destroy (msg : * mut sensor_msgs__msg__PointField) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__Sequence__init (array : * mut sensor_msgs__msg__PointField__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__Sequence__fini (array : * mut sensor_msgs__msg__PointField__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__PointField__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__PointField__Sequence__destroy (array : * mut sensor_msgs__msg__PointField__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__PointField () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__create () -> * mut sensor_msgs__msg__Range { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__destroy (msg : * mut sensor_msgs__msg__Range) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__Sequence__init (array : * mut sensor_msgs__msg__Range__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__Sequence__fini (array : * mut sensor_msgs__msg__Range__Sequence) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Range__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Range__Sequence__destroy (array : * mut sensor_msgs__msg__Range__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Range () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__create () -> * mut sensor_msgs__msg__RegionOfInterest { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__destroy (msg : * mut sensor_msgs__msg__RegionOfInterest ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__Sequence__init (array : * mut sensor_msgs__msg__RegionOfInterest__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__Sequence__fini (array : * mut sensor_msgs__msg__RegionOfInterest__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__RegionOfInterest__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RegionOfInterest__Sequence__destroy (array : * mut sensor_msgs__msg__RegionOfInterest__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__RegionOfInterest () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__create () -> * mut sensor_msgs__msg__RelativeHumidity { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__destroy (msg : * mut sensor_msgs__msg__RelativeHumidity ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__Sequence__init (array : * mut sensor_msgs__msg__RelativeHumidity__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__Sequence__fini (array : * mut sensor_msgs__msg__RelativeHumidity__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__RelativeHumidity__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__RelativeHumidity__Sequence__destroy (array : * mut sensor_msgs__msg__RelativeHumidity__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__RelativeHumidity () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__create () -> * mut sensor_msgs__msg__Temperature { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__destroy (msg : * mut sensor_msgs__msg__Temperature) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__Sequence__init (array : * mut sensor_msgs__msg__Temperature__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__Sequence__fini (array : * mut sensor_msgs__msg__Temperature__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__Temperature__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__Temperature__Sequence__destroy (array : * mut sensor_msgs__msg__Temperature__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__Temperature () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__create () -> * mut sensor_msgs__msg__TimeReference { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__destroy (msg : * mut sensor_msgs__msg__TimeReference) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__Sequence__init (array : * mut sensor_msgs__msg__TimeReference__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__Sequence__fini (array : * mut sensor_msgs__msg__TimeReference__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__Sequence__create (size : usize ,) -> * mut sensor_msgs__msg__TimeReference__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__msg__TimeReference__Sequence__destroy (array : * mut sensor_msgs__msg__TimeReference__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__msg__TimeReference () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__sensor_msgs__srv__SetCameraInfo () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__create () -> * mut sensor_msgs__srv__SetCameraInfo_Request { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__destroy (msg : * mut sensor_msgs__srv__SetCameraInfo_Request ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__init (array : * mut sensor_msgs__srv__SetCameraInfo_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__fini (array : * mut sensor_msgs__srv__SetCameraInfo_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__create (size : usize ,) -> * mut sensor_msgs__srv__SetCameraInfo_Request__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Request__Sequence__destroy (array : * mut sensor_msgs__srv__SetCameraInfo_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__create () -> * mut sensor_msgs__srv__SetCameraInfo_Response { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__destroy (msg : * mut sensor_msgs__srv__SetCameraInfo_Response ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__init (array : * mut sensor_msgs__srv__SetCameraInfo_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__fini (array : * mut sensor_msgs__srv__SetCameraInfo_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__create (size : usize ,) -> * mut sensor_msgs__srv__SetCameraInfo_Response__Sequence { todo ! () } # [allow (unused)] pub fn sensor_msgs__srv__SetCameraInfo_Response__Sequence__destroy (array : * mut sensor_msgs__srv__SetCameraInfo_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__sensor_msgs__srv__SetCameraInfo_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__sensor_msgs__srv__SetCameraInfo () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Mesh () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__MeshTriangle () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__Plane () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__shape_msgs__msg__SolidPrimitive () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__create () -> * mut shape_msgs__msg__Mesh { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__destroy (msg : * mut shape_msgs__msg__Mesh) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__Sequence__init (array : * mut shape_msgs__msg__Mesh__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__Sequence__fini (array : * mut shape_msgs__msg__Mesh__Sequence) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__Sequence__create (size : usize ,) -> * mut shape_msgs__msg__Mesh__Sequence { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Mesh__Sequence__destroy (array : * mut shape_msgs__msg__Mesh__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__Mesh () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__create () -> * mut shape_msgs__msg__MeshTriangle { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__destroy (msg : * mut shape_msgs__msg__MeshTriangle) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__Sequence__init (array : * mut shape_msgs__msg__MeshTriangle__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__Sequence__fini (array : * mut shape_msgs__msg__MeshTriangle__Sequence ,) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__Sequence__create (size : usize ,) -> * mut shape_msgs__msg__MeshTriangle__Sequence { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__MeshTriangle__Sequence__destroy (array : * mut shape_msgs__msg__MeshTriangle__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__MeshTriangle () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__create () -> * mut shape_msgs__msg__Plane { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__destroy (msg : * mut shape_msgs__msg__Plane) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__Sequence__init (array : * mut shape_msgs__msg__Plane__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__Sequence__fini (array : * mut shape_msgs__msg__Plane__Sequence) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__Sequence__create (size : usize ,) -> * mut shape_msgs__msg__Plane__Sequence { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__Plane__Sequence__destroy (array : * mut shape_msgs__msg__Plane__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__Plane () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__create () -> * mut shape_msgs__msg__SolidPrimitive { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__destroy (msg : * mut shape_msgs__msg__SolidPrimitive) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__Sequence__init (array : * mut shape_msgs__msg__SolidPrimitive__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__Sequence__fini (array : * mut shape_msgs__msg__SolidPrimitive__Sequence ,) { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__Sequence__create (size : usize ,) -> * mut shape_msgs__msg__SolidPrimitive__Sequence { todo ! () } # [allow (unused)] pub fn shape_msgs__msg__SolidPrimitive__Sequence__destroy (array : * mut shape_msgs__msg__SolidPrimitive__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__shape_msgs__msg__SolidPrimitive () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__MetricsMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataType () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__create () -> * mut statistics_msgs__msg__MetricsMessage { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__destroy (msg : * mut statistics_msgs__msg__MetricsMessage ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__Sequence__init (array : * mut statistics_msgs__msg__MetricsMessage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__Sequence__fini (array : * mut statistics_msgs__msg__MetricsMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__Sequence__create (size : usize ,) -> * mut statistics_msgs__msg__MetricsMessage__Sequence { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__MetricsMessage__Sequence__destroy (array : * mut statistics_msgs__msg__MetricsMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__MetricsMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__create () -> * mut statistics_msgs__msg__StatisticDataPoint { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__destroy (msg : * mut statistics_msgs__msg__StatisticDataPoint ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__init (array : * mut statistics_msgs__msg__StatisticDataPoint__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__fini (array : * mut statistics_msgs__msg__StatisticDataPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__create (size : usize ,) -> * mut statistics_msgs__msg__StatisticDataPoint__Sequence { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataPoint__Sequence__destroy (array : * mut statistics_msgs__msg__StatisticDataPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__create () -> * mut statistics_msgs__msg__StatisticDataType { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__destroy (msg : * mut statistics_msgs__msg__StatisticDataType ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__Sequence__init (array : * mut statistics_msgs__msg__StatisticDataType__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__Sequence__fini (array : * mut statistics_msgs__msg__StatisticDataType__Sequence ,) { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__Sequence__create (size : usize ,) -> * mut statistics_msgs__msg__StatisticDataType__Sequence { todo ! () } # [allow (unused)] pub fn statistics_msgs__msg__StatisticDataType__Sequence__destroy (array : * mut statistics_msgs__msg__StatisticDataType__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__statistics_msgs__msg__StatisticDataType () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__create () -> * mut std_msgs__msg__Bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__destroy (msg : * mut std_msgs__msg__Bool) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__Sequence__init (array : * mut std_msgs__msg__Bool__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__Sequence__fini (array : * mut std_msgs__msg__Bool__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__Sequence__create (size : usize) -> * mut std_msgs__msg__Bool__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Bool__Sequence__destroy (array : * mut std_msgs__msg__Bool__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Bool () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__create () -> * mut std_msgs__msg__Byte { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__destroy (msg : * mut std_msgs__msg__Byte) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__Sequence__init (array : * mut std_msgs__msg__Byte__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__Sequence__fini (array : * mut std_msgs__msg__Byte__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__Sequence__create (size : usize) -> * mut std_msgs__msg__Byte__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Byte__Sequence__destroy (array : * mut std_msgs__msg__Byte__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Byte () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__create () -> * mut std_msgs__msg__ByteMultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__destroy (msg : * mut std_msgs__msg__ByteMultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__Sequence__init (array : * mut std_msgs__msg__ByteMultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__Sequence__fini (array : * mut std_msgs__msg__ByteMultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__ByteMultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ByteMultiArray__Sequence__destroy (array : * mut std_msgs__msg__ByteMultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__ByteMultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__create () -> * mut std_msgs__msg__Char { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__destroy (msg : * mut std_msgs__msg__Char) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__Sequence__init (array : * mut std_msgs__msg__Char__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__Sequence__fini (array : * mut std_msgs__msg__Char__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__Sequence__create (size : usize) -> * mut std_msgs__msg__Char__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Char__Sequence__destroy (array : * mut std_msgs__msg__Char__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Char () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__create () -> * mut std_msgs__msg__ColorRGBA { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__destroy (msg : * mut std_msgs__msg__ColorRGBA) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__Sequence__init (array : * mut std_msgs__msg__ColorRGBA__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__Sequence__fini (array : * mut std_msgs__msg__ColorRGBA__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__Sequence__create (size : usize ,) -> * mut std_msgs__msg__ColorRGBA__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__ColorRGBA__Sequence__destroy (array : * mut std_msgs__msg__ColorRGBA__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__ColorRGBA () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Bool () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Byte () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ByteMultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Char () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__ColorRGBA () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Empty () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Float64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Header () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int16MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__Int8MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayDimension () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__MultiArrayLayout () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__String () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt16MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__std_msgs__msg__UInt8MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__create () -> * mut std_msgs__msg__Empty { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__destroy (msg : * mut std_msgs__msg__Empty) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__Sequence__init (array : * mut std_msgs__msg__Empty__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__Sequence__fini (array : * mut std_msgs__msg__Empty__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Empty__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Empty__Sequence__destroy (array : * mut std_msgs__msg__Empty__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Empty () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__create () -> * mut std_msgs__msg__Float32 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__destroy (msg : * mut std_msgs__msg__Float32) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__Sequence__init (array : * mut std_msgs__msg__Float32__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__Sequence__fini (array : * mut std_msgs__msg__Float32__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Float32__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32__Sequence__destroy (array : * mut std_msgs__msg__Float32__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__create () -> * mut std_msgs__msg__Float32MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__destroy (msg : * mut std_msgs__msg__Float32MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__Sequence__init (array : * mut std_msgs__msg__Float32MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__Sequence__fini (array : * mut std_msgs__msg__Float32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Float32MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float32MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Float32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__create () -> * mut std_msgs__msg__Float64 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__destroy (msg : * mut std_msgs__msg__Float64) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__Sequence__init (array : * mut std_msgs__msg__Float64__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__Sequence__fini (array : * mut std_msgs__msg__Float64__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Float64__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64__Sequence__destroy (array : * mut std_msgs__msg__Float64__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__create () -> * mut std_msgs__msg__Float64MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__destroy (msg : * mut std_msgs__msg__Float64MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__Sequence__init (array : * mut std_msgs__msg__Float64MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__Sequence__fini (array : * mut std_msgs__msg__Float64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Float64MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Float64MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Float64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Float64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__create () -> * mut std_msgs__msg__Header { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__destroy (msg : * mut std_msgs__msg__Header) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__Sequence__init (array : * mut std_msgs__msg__Header__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__Sequence__fini (array : * mut std_msgs__msg__Header__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Header__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Header__Sequence__destroy (array : * mut std_msgs__msg__Header__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Header () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__create () -> * mut std_msgs__msg__Int16 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__destroy (msg : * mut std_msgs__msg__Int16) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__Sequence__init (array : * mut std_msgs__msg__Int16__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__Sequence__fini (array : * mut std_msgs__msg__Int16__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int16__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16__Sequence__destroy (array : * mut std_msgs__msg__Int16__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int16 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__create () -> * mut std_msgs__msg__Int16MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__destroy (msg : * mut std_msgs__msg__Int16MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__Sequence__init (array : * mut std_msgs__msg__Int16MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__Sequence__fini (array : * mut std_msgs__msg__Int16MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int16MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int16MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Int16MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int16MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__create () -> * mut std_msgs__msg__Int32 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__destroy (msg : * mut std_msgs__msg__Int32) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__Sequence__init (array : * mut std_msgs__msg__Int32__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__Sequence__fini (array : * mut std_msgs__msg__Int32__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int32__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32__Sequence__destroy (array : * mut std_msgs__msg__Int32__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__create () -> * mut std_msgs__msg__Int32MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__destroy (msg : * mut std_msgs__msg__Int32MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__Sequence__init (array : * mut std_msgs__msg__Int32MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__Sequence__fini (array : * mut std_msgs__msg__Int32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int32MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int32MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Int32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__create () -> * mut std_msgs__msg__Int64 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__destroy (msg : * mut std_msgs__msg__Int64) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__Sequence__init (array : * mut std_msgs__msg__Int64__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__Sequence__fini (array : * mut std_msgs__msg__Int64__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int64__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64__Sequence__destroy (array : * mut std_msgs__msg__Int64__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__create () -> * mut std_msgs__msg__Int64MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__destroy (msg : * mut std_msgs__msg__Int64MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__Sequence__init (array : * mut std_msgs__msg__Int64MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__Sequence__fini (array : * mut std_msgs__msg__Int64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int64MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int64MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Int64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__create () -> * mut std_msgs__msg__Int8 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__destroy (msg : * mut std_msgs__msg__Int8) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__Sequence__init (array : * mut std_msgs__msg__Int8__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__Sequence__fini (array : * mut std_msgs__msg__Int8__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__Sequence__create (size : usize) -> * mut std_msgs__msg__Int8__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8__Sequence__destroy (array : * mut std_msgs__msg__Int8__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int8 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__create () -> * mut std_msgs__msg__Int8MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__destroy (msg : * mut std_msgs__msg__Int8MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__Sequence__init (array : * mut std_msgs__msg__Int8MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__Sequence__fini (array : * mut std_msgs__msg__Int8MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__Int8MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__Int8MultiArray__Sequence__destroy (array : * mut std_msgs__msg__Int8MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__Int8MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__create () -> * mut std_msgs__msg__MultiArrayDimension { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__destroy (msg : * mut std_msgs__msg__MultiArrayDimension ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__Sequence__init (array : * mut std_msgs__msg__MultiArrayDimension__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__Sequence__fini (array : * mut std_msgs__msg__MultiArrayDimension__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__Sequence__create (size : usize ,) -> * mut std_msgs__msg__MultiArrayDimension__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayDimension__Sequence__destroy (array : * mut std_msgs__msg__MultiArrayDimension__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__MultiArrayDimension () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__create () -> * mut std_msgs__msg__MultiArrayLayout { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__destroy (msg : * mut std_msgs__msg__MultiArrayLayout) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__Sequence__init (array : * mut std_msgs__msg__MultiArrayLayout__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__Sequence__fini (array : * mut std_msgs__msg__MultiArrayLayout__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__Sequence__create (size : usize ,) -> * mut std_msgs__msg__MultiArrayLayout__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__MultiArrayLayout__Sequence__destroy (array : * mut std_msgs__msg__MultiArrayLayout__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__MultiArrayLayout () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__create () -> * mut std_msgs__msg__String { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__destroy (msg : * mut std_msgs__msg__String) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__Sequence__init (array : * mut std_msgs__msg__String__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__Sequence__fini (array : * mut std_msgs__msg__String__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__Sequence__create (size : usize ,) -> * mut std_msgs__msg__String__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__String__Sequence__destroy (array : * mut std_msgs__msg__String__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__String () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__create () -> * mut std_msgs__msg__UInt16 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__destroy (msg : * mut std_msgs__msg__UInt16) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__Sequence__init (array : * mut std_msgs__msg__UInt16__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__Sequence__fini (array : * mut std_msgs__msg__UInt16__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt16__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16__Sequence__destroy (array : * mut std_msgs__msg__UInt16__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt16 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__create () -> * mut std_msgs__msg__UInt16MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__destroy (msg : * mut std_msgs__msg__UInt16MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__Sequence__init (array : * mut std_msgs__msg__UInt16MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__Sequence__fini (array : * mut std_msgs__msg__UInt16MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt16MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt16MultiArray__Sequence__destroy (array : * mut std_msgs__msg__UInt16MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt16MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__create () -> * mut std_msgs__msg__UInt32 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__destroy (msg : * mut std_msgs__msg__UInt32) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__Sequence__init (array : * mut std_msgs__msg__UInt32__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__Sequence__fini (array : * mut std_msgs__msg__UInt32__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt32__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32__Sequence__destroy (array : * mut std_msgs__msg__UInt32__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt32 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__create () -> * mut std_msgs__msg__UInt32MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__destroy (msg : * mut std_msgs__msg__UInt32MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__Sequence__init (array : * mut std_msgs__msg__UInt32MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__Sequence__fini (array : * mut std_msgs__msg__UInt32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt32MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt32MultiArray__Sequence__destroy (array : * mut std_msgs__msg__UInt32MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt32MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__create () -> * mut std_msgs__msg__UInt64 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__destroy (msg : * mut std_msgs__msg__UInt64) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__Sequence__init (array : * mut std_msgs__msg__UInt64__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__Sequence__fini (array : * mut std_msgs__msg__UInt64__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt64__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64__Sequence__destroy (array : * mut std_msgs__msg__UInt64__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt64 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__create () -> * mut std_msgs__msg__UInt64MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__destroy (msg : * mut std_msgs__msg__UInt64MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__Sequence__init (array : * mut std_msgs__msg__UInt64MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__Sequence__fini (array : * mut std_msgs__msg__UInt64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt64MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt64MultiArray__Sequence__destroy (array : * mut std_msgs__msg__UInt64MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt64MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__create () -> * mut std_msgs__msg__UInt8 { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__destroy (msg : * mut std_msgs__msg__UInt8) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__Sequence__init (array : * mut std_msgs__msg__UInt8__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__Sequence__fini (array : * mut std_msgs__msg__UInt8__Sequence) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt8__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8__Sequence__destroy (array : * mut std_msgs__msg__UInt8__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt8 () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__create () -> * mut std_msgs__msg__UInt8MultiArray { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__destroy (msg : * mut std_msgs__msg__UInt8MultiArray) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__Sequence__init (array : * mut std_msgs__msg__UInt8MultiArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__Sequence__fini (array : * mut std_msgs__msg__UInt8MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__Sequence__create (size : usize ,) -> * mut std_msgs__msg__UInt8MultiArray__Sequence { todo ! () } # [allow (unused)] pub fn std_msgs__msg__UInt8MultiArray__Sequence__destroy (array : * mut std_msgs__msg__UInt8MultiArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__std_msgs__msg__UInt8MultiArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__stereo_msgs__msg__DisparityImage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__create () -> * mut stereo_msgs__msg__DisparityImage { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__destroy (msg : * mut stereo_msgs__msg__DisparityImage) { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__Sequence__init (array : * mut stereo_msgs__msg__DisparityImage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__Sequence__fini (array : * mut stereo_msgs__msg__DisparityImage__Sequence ,) { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__Sequence__create (size : usize ,) -> * mut stereo_msgs__msg__DisparityImage__Sequence { todo ! () } # [allow (unused)] pub fn stereo_msgs__msg__DisparityImage__Sequence__destroy (array : * mut stereo_msgs__msg__DisparityImage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__stereo_msgs__msg__DisparityImage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__Fibonacci_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__Fibonacci_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__Fibonacci_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__NestedMessage_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__action__NestedMessage_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__action__NestedMessage_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__create () -> * mut test_msgs__action__Fibonacci_Goal { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__destroy (msg : * mut test_msgs__action__Fibonacci_Goal) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__Sequence__init (array : * mut test_msgs__action__Fibonacci_Goal__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__Sequence__fini (array : * mut test_msgs__action__Fibonacci_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_Goal__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Goal__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__create () -> * mut test_msgs__action__Fibonacci_Result { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__destroy (msg : * mut test_msgs__action__Fibonacci_Result ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__Sequence__init (array : * mut test_msgs__action__Fibonacci_Result__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__Sequence__fini (array : * mut test_msgs__action__Fibonacci_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_Result__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Result__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__create () -> * mut test_msgs__action__Fibonacci_Feedback { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__destroy (msg : * mut test_msgs__action__Fibonacci_Feedback ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__Sequence__init (array : * mut test_msgs__action__Fibonacci_Feedback__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__Sequence__fini (array : * mut test_msgs__action__Fibonacci_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_Feedback__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_Feedback__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__create () -> * mut test_msgs__action__Fibonacci_SendGoal_Request { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__destroy (msg : * mut test_msgs__action__Fibonacci_SendGoal_Request ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__init (array : * mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__fini (array : * mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Request__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__create () -> * mut test_msgs__action__Fibonacci_SendGoal_Response { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__destroy (msg : * mut test_msgs__action__Fibonacci_SendGoal_Response ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__init (array : * mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__fini (array : * mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_SendGoal_Response__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__create () -> * mut test_msgs__action__Fibonacci_GetResult_Request { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__destroy (msg : * mut test_msgs__action__Fibonacci_GetResult_Request ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__init (array : * mut test_msgs__action__Fibonacci_GetResult_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__fini (array : * mut test_msgs__action__Fibonacci_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_GetResult_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Request__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__create () -> * mut test_msgs__action__Fibonacci_GetResult_Response { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__destroy (msg : * mut test_msgs__action__Fibonacci_GetResult_Response ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__init (array : * mut test_msgs__action__Fibonacci_GetResult_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__fini (array : * mut test_msgs__action__Fibonacci_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_GetResult_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_GetResult_Response__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__create () -> * mut test_msgs__action__Fibonacci_FeedbackMessage { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__destroy (msg : * mut test_msgs__action__Fibonacci_FeedbackMessage ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__init (array : * mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__fini (array : * mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__create (size : usize ,) -> * mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__Fibonacci_FeedbackMessage__Sequence__destroy (array : * mut test_msgs__action__Fibonacci_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_action_type_support_handle__test_msgs__action__Fibonacci () -> * const rosidl_action_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__Fibonacci_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__Fibonacci_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__Fibonacci_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__create () -> * mut test_msgs__action__NestedMessage_Goal { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__destroy (msg : * mut test_msgs__action__NestedMessage_Goal ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__Sequence__init (array : * mut test_msgs__action__NestedMessage_Goal__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__Sequence__fini (array : * mut test_msgs__action__NestedMessage_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_Goal__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Goal__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__create () -> * mut test_msgs__action__NestedMessage_Result { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__destroy (msg : * mut test_msgs__action__NestedMessage_Result ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__Sequence__init (array : * mut test_msgs__action__NestedMessage_Result__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__Sequence__fini (array : * mut test_msgs__action__NestedMessage_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_Result__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Result__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__create () -> * mut test_msgs__action__NestedMessage_Feedback { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__destroy (msg : * mut test_msgs__action__NestedMessage_Feedback ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__Sequence__init (array : * mut test_msgs__action__NestedMessage_Feedback__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__Sequence__fini (array : * mut test_msgs__action__NestedMessage_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_Feedback__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_Feedback__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__create () -> * mut test_msgs__action__NestedMessage_SendGoal_Request { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__destroy (msg : * mut test_msgs__action__NestedMessage_SendGoal_Request ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__init (array : * mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__fini (array : * mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Request__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__create () -> * mut test_msgs__action__NestedMessage_SendGoal_Response { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__destroy (msg : * mut test_msgs__action__NestedMessage_SendGoal_Response ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__init (array : * mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__fini (array : * mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_SendGoal_Response__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__create () -> * mut test_msgs__action__NestedMessage_GetResult_Request { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__destroy (msg : * mut test_msgs__action__NestedMessage_GetResult_Request ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__init (array : * mut test_msgs__action__NestedMessage_GetResult_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__fini (array : * mut test_msgs__action__NestedMessage_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_GetResult_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Request__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__create () -> * mut test_msgs__action__NestedMessage_GetResult_Response { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__destroy (msg : * mut test_msgs__action__NestedMessage_GetResult_Response ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__init (array : * mut test_msgs__action__NestedMessage_GetResult_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__fini (array : * mut test_msgs__action__NestedMessage_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_GetResult_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_GetResult_Response__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__create () -> * mut test_msgs__action__NestedMessage_FeedbackMessage { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__destroy (msg : * mut test_msgs__action__NestedMessage_FeedbackMessage ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__init (array : * mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__fini (array : * mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__create (size : usize ,) -> * mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__action__NestedMessage_FeedbackMessage__Sequence__destroy (array : * mut test_msgs__action__NestedMessage_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_action_type_support_handle__test_msgs__action__NestedMessage () -> * const rosidl_action_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__NestedMessage_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__action__NestedMessage_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__action__NestedMessage_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__create () -> * mut test_msgs__msg__Arrays { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__destroy (msg : * mut test_msgs__msg__Arrays) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__Sequence__init (array : * mut test_msgs__msg__Arrays__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__Sequence__fini (array : * mut test_msgs__msg__Arrays__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Arrays__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Arrays__Sequence__destroy (array : * mut test_msgs__msg__Arrays__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Arrays () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__create () -> * mut test_msgs__msg__BasicTypes { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__destroy (msg : * mut test_msgs__msg__BasicTypes) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__Sequence__init (array : * mut test_msgs__msg__BasicTypes__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__Sequence__fini (array : * mut test_msgs__msg__BasicTypes__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__Sequence__create (size : usize ,) -> * mut test_msgs__msg__BasicTypes__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BasicTypes__Sequence__destroy (array : * mut test_msgs__msg__BasicTypes__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BasicTypes () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__create () -> * mut test_msgs__msg__BoundedPlainSequences { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__destroy (msg : * mut test_msgs__msg__BoundedPlainSequences ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__Sequence__init (array : * mut test_msgs__msg__BoundedPlainSequences__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__Sequence__fini (array : * mut test_msgs__msg__BoundedPlainSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__Sequence__create (size : usize ,) -> * mut test_msgs__msg__BoundedPlainSequences__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedPlainSequences__Sequence__destroy (array : * mut test_msgs__msg__BoundedPlainSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BoundedPlainSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__create () -> * mut test_msgs__msg__BoundedSequences { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__destroy (msg : * mut test_msgs__msg__BoundedSequences) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__Sequence__init (array : * mut test_msgs__msg__BoundedSequences__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__Sequence__fini (array : * mut test_msgs__msg__BoundedSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__Sequence__create (size : usize ,) -> * mut test_msgs__msg__BoundedSequences__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__BoundedSequences__Sequence__destroy (array : * mut test_msgs__msg__BoundedSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__BoundedSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__create () -> * mut test_msgs__msg__Builtins { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__destroy (msg : * mut test_msgs__msg__Builtins) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__Sequence__init (array : * mut test_msgs__msg__Builtins__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__Sequence__fini (array : * mut test_msgs__msg__Builtins__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Builtins__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Builtins__Sequence__destroy (array : * mut test_msgs__msg__Builtins__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Builtins () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__create () -> * mut test_msgs__msg__Constants { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__destroy (msg : * mut test_msgs__msg__Constants) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__Sequence__init (array : * mut test_msgs__msg__Constants__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__Sequence__fini (array : * mut test_msgs__msg__Constants__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Constants__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Constants__Sequence__destroy (array : * mut test_msgs__msg__Constants__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Constants () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__create () -> * mut test_msgs__msg__Defaults { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__destroy (msg : * mut test_msgs__msg__Defaults) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__Sequence__init (array : * mut test_msgs__msg__Defaults__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__Sequence__fini (array : * mut test_msgs__msg__Defaults__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Defaults__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Defaults__Sequence__destroy (array : * mut test_msgs__msg__Defaults__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Defaults () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Arrays () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BasicTypes () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedPlainSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__BoundedSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Builtins () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Constants () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Defaults () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Empty () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__MultiNested () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Nested () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__Strings () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__UnboundedSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__msg__WStrings () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__create () -> * mut test_msgs__msg__Empty { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__destroy (msg : * mut test_msgs__msg__Empty) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__Sequence__init (array : * mut test_msgs__msg__Empty__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__Sequence__fini (array : * mut test_msgs__msg__Empty__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Empty__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Empty__Sequence__destroy (array : * mut test_msgs__msg__Empty__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Empty () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__create () -> * mut test_msgs__msg__MultiNested { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__destroy (msg : * mut test_msgs__msg__MultiNested) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__Sequence__init (array : * mut test_msgs__msg__MultiNested__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__Sequence__fini (array : * mut test_msgs__msg__MultiNested__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__Sequence__create (size : usize ,) -> * mut test_msgs__msg__MultiNested__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__MultiNested__Sequence__destroy (array : * mut test_msgs__msg__MultiNested__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__MultiNested () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__create () -> * mut test_msgs__msg__Nested { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__destroy (msg : * mut test_msgs__msg__Nested) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__Sequence__init (array : * mut test_msgs__msg__Nested__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__Sequence__fini (array : * mut test_msgs__msg__Nested__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Nested__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Nested__Sequence__destroy (array : * mut test_msgs__msg__Nested__Sequence) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Nested () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__create () -> * mut test_msgs__msg__Strings { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__destroy (msg : * mut test_msgs__msg__Strings) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__Sequence__init (array : * mut test_msgs__msg__Strings__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__Sequence__fini (array : * mut test_msgs__msg__Strings__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__Sequence__create (size : usize ,) -> * mut test_msgs__msg__Strings__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__Strings__Sequence__destroy (array : * mut test_msgs__msg__Strings__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__Strings () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__create () -> * mut test_msgs__msg__UnboundedSequences { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__destroy (msg : * mut test_msgs__msg__UnboundedSequences ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__Sequence__init (array : * mut test_msgs__msg__UnboundedSequences__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__Sequence__fini (array : * mut test_msgs__msg__UnboundedSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__Sequence__create (size : usize ,) -> * mut test_msgs__msg__UnboundedSequences__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__UnboundedSequences__Sequence__destroy (array : * mut test_msgs__msg__UnboundedSequences__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__UnboundedSequences () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__create () -> * mut test_msgs__msg__WStrings { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__destroy (msg : * mut test_msgs__msg__WStrings) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__Sequence__init (array : * mut test_msgs__msg__WStrings__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__Sequence__fini (array : * mut test_msgs__msg__WStrings__Sequence) { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__Sequence__create (size : usize ,) -> * mut test_msgs__msg__WStrings__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__msg__WStrings__Sequence__destroy (array : * mut test_msgs__msg__WStrings__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__msg__WStrings () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__create () -> * mut test_msgs__srv__Arrays_Request { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__destroy (msg : * mut test_msgs__srv__Arrays_Request) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__Sequence__init (array : * mut test_msgs__srv__Arrays_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__Sequence__fini (array : * mut test_msgs__srv__Arrays_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__Sequence__create (size : usize ,) -> * mut test_msgs__srv__Arrays_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Request__Sequence__destroy (array : * mut test_msgs__srv__Arrays_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__create () -> * mut test_msgs__srv__Arrays_Response { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__destroy (msg : * mut test_msgs__srv__Arrays_Response) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__Sequence__init (array : * mut test_msgs__srv__Arrays_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__Sequence__fini (array : * mut test_msgs__srv__Arrays_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__Sequence__create (size : usize ,) -> * mut test_msgs__srv__Arrays_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Arrays_Response__Sequence__destroy (array : * mut test_msgs__srv__Arrays_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Arrays_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Arrays_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__Arrays () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__create () -> * mut test_msgs__srv__BasicTypes_Request { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__destroy (msg : * mut test_msgs__srv__BasicTypes_Request ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__Sequence__init (array : * mut test_msgs__srv__BasicTypes_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__Sequence__fini (array : * mut test_msgs__srv__BasicTypes_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__Sequence__create (size : usize ,) -> * mut test_msgs__srv__BasicTypes_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Request__Sequence__destroy (array : * mut test_msgs__srv__BasicTypes_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__create () -> * mut test_msgs__srv__BasicTypes_Response { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__destroy (msg : * mut test_msgs__srv__BasicTypes_Response ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__Sequence__init (array : * mut test_msgs__srv__BasicTypes_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__Sequence__fini (array : * mut test_msgs__srv__BasicTypes_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__Sequence__create (size : usize ,) -> * mut test_msgs__srv__BasicTypes_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__BasicTypes_Response__Sequence__destroy (array : * mut test_msgs__srv__BasicTypes_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__BasicTypes () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Arrays_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__Arrays () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__BasicTypes_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__BasicTypes () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__test_msgs__srv__Empty_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__test_msgs__srv__Empty () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__create () -> * mut test_msgs__srv__Empty_Request { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__destroy (msg : * mut test_msgs__srv__Empty_Request) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__Sequence__init (array : * mut test_msgs__srv__Empty_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__Sequence__fini (array : * mut test_msgs__srv__Empty_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__Sequence__create (size : usize ,) -> * mut test_msgs__srv__Empty_Request__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Request__Sequence__destroy (array : * mut test_msgs__srv__Empty_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__create () -> * mut test_msgs__srv__Empty_Response { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__destroy (msg : * mut test_msgs__srv__Empty_Response) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__Sequence__init (array : * mut test_msgs__srv__Empty_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__Sequence__fini (array : * mut test_msgs__srv__Empty_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__Sequence__create (size : usize ,) -> * mut test_msgs__srv__Empty_Response__Sequence { todo ! () } # [allow (unused)] pub fn test_msgs__srv__Empty_Response__Sequence__destroy (array : * mut test_msgs__srv__Empty_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Empty_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__test_msgs__srv__Empty_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__test_msgs__srv__Empty () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__create () -> * mut tf2_msgs__action__LookupTransform_Goal { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__destroy (msg : * mut tf2_msgs__action__LookupTransform_Goal ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_Goal__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_Goal__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Goal__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_Goal__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__create () -> * mut tf2_msgs__action__LookupTransform_Result { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__destroy (msg : * mut tf2_msgs__action__LookupTransform_Result ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_Result__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_Result__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Result__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_Result__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__create () -> * mut tf2_msgs__action__LookupTransform_Feedback { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__destroy (msg : * mut tf2_msgs__action__LookupTransform_Feedback ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_Feedback__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_Feedback__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_Feedback__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_Feedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__create () -> * mut tf2_msgs__action__LookupTransform_SendGoal_Request { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__destroy (msg : * mut tf2_msgs__action__LookupTransform_SendGoal_Request ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__create () -> * mut tf2_msgs__action__LookupTransform_SendGoal_Response { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__destroy (msg : * mut tf2_msgs__action__LookupTransform_SendGoal_Response ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_SendGoal_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__create () -> * mut tf2_msgs__action__LookupTransform_GetResult_Request { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__destroy (msg : * mut tf2_msgs__action__LookupTransform_GetResult_Request ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Request__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_GetResult_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__create () -> * mut tf2_msgs__action__LookupTransform_GetResult_Response { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__destroy (msg : * mut tf2_msgs__action__LookupTransform_GetResult_Response ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_GetResult_Response__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_GetResult_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__create () -> * mut tf2_msgs__action__LookupTransform_FeedbackMessage { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__destroy (msg : * mut tf2_msgs__action__LookupTransform_FeedbackMessage ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__init (array : * mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__fini (array : * mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__create (size : usize ,) -> * mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence__destroy (array : * mut tf2_msgs__action__LookupTransform_FeedbackMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_action_type_support_handle__tf2_msgs__action__LookupTransform () -> * const rosidl_action_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Goal () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Result () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_Feedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_SendGoal () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_GetResult_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__action__LookupTransform_GetResult () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__action__LookupTransform_FeedbackMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TF2Error () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__msg__TFMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__create () -> * mut tf2_msgs__msg__TF2Error { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__destroy (msg : * mut tf2_msgs__msg__TF2Error) { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__Sequence__init (array : * mut tf2_msgs__msg__TF2Error__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__Sequence__fini (array : * mut tf2_msgs__msg__TF2Error__Sequence) { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__Sequence__create (size : usize ,) -> * mut tf2_msgs__msg__TF2Error__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TF2Error__Sequence__destroy (array : * mut tf2_msgs__msg__TF2Error__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__msg__TF2Error () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__create () -> * mut tf2_msgs__msg__TFMessage { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__destroy (msg : * mut tf2_msgs__msg__TFMessage) { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__Sequence__init (array : * mut tf2_msgs__msg__TFMessage__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__Sequence__fini (array : * mut tf2_msgs__msg__TFMessage__Sequence) { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__Sequence__create (size : usize ,) -> * mut tf2_msgs__msg__TFMessage__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__msg__TFMessage__Sequence__destroy (array : * mut tf2_msgs__msg__TFMessage__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__msg__TFMessage () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__tf2_msgs__srv__FrameGraph () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__create () -> * mut tf2_msgs__srv__FrameGraph_Request { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__destroy (msg : * mut tf2_msgs__srv__FrameGraph_Request) { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__init (array : * mut tf2_msgs__srv__FrameGraph_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__fini (array : * mut tf2_msgs__srv__FrameGraph_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__create (size : usize ,) -> * mut tf2_msgs__srv__FrameGraph_Request__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Request__Sequence__destroy (array : * mut tf2_msgs__srv__FrameGraph_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__create () -> * mut tf2_msgs__srv__FrameGraph_Response { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__destroy (msg : * mut tf2_msgs__srv__FrameGraph_Response ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__init (array : * mut tf2_msgs__srv__FrameGraph_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__fini (array : * mut tf2_msgs__srv__FrameGraph_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__create (size : usize ,) -> * mut tf2_msgs__srv__FrameGraph_Response__Sequence { todo ! () } # [allow (unused)] pub fn tf2_msgs__srv__FrameGraph_Response__Sequence__destroy (array : * mut tf2_msgs__srv__FrameGraph_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__tf2_msgs__srv__FrameGraph_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__tf2_msgs__srv__FrameGraph () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectory () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectoryPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectory () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectoryPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__create () -> * mut trajectory_msgs__msg__JointTrajectory { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__destroy (msg : * mut trajectory_msgs__msg__JointTrajectory ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__Sequence__init (array : * mut trajectory_msgs__msg__JointTrajectory__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__Sequence__fini (array : * mut trajectory_msgs__msg__JointTrajectory__Sequence ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__Sequence__create (size : usize ,) -> * mut trajectory_msgs__msg__JointTrajectory__Sequence { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectory__Sequence__destroy (array : * mut trajectory_msgs__msg__JointTrajectory__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectory () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__create () -> * mut trajectory_msgs__msg__JointTrajectoryPoint { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__destroy (msg : * mut trajectory_msgs__msg__JointTrajectoryPoint ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__init (array : * mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__fini (array : * mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__create (size : usize ,) -> * mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__JointTrajectoryPoint__Sequence__destroy (array : * mut trajectory_msgs__msg__JointTrajectoryPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__JointTrajectoryPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__create () -> * mut trajectory_msgs__msg__MultiDOFJointTrajectory { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__destroy (msg : * mut trajectory_msgs__msg__MultiDOFJointTrajectory ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__init (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__fini (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__create (size : usize ,) -> * mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence__destroy (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectory__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectory () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__create () -> * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__destroy (msg : * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__init (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__fini (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__create (size : usize ,) -> * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence { todo ! () } # [allow (unused)] pub fn trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence__destroy (array : * mut trajectory_msgs__msg__MultiDOFJointTrajectoryPoint__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__trajectory_msgs__msg__MultiDOFJointTrajectoryPoint () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__unique_identifier_msgs__msg__UUID () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__create () -> * mut unique_identifier_msgs__msg__UUID { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__destroy (msg : * mut unique_identifier_msgs__msg__UUID) { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__Sequence__init (array : * mut unique_identifier_msgs__msg__UUID__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__Sequence__fini (array : * mut unique_identifier_msgs__msg__UUID__Sequence ,) { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__Sequence__create (size : usize ,) -> * mut unique_identifier_msgs__msg__UUID__Sequence { todo ! () } # [allow (unused)] pub fn unique_identifier_msgs__msg__UUID__Sequence__destroy (array : * mut unique_identifier_msgs__msg__UUID__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__unique_identifier_msgs__msg__UUID () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__ImageMarker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerControl () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerFeedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerInit () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerPose () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerUpdate () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__Marker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MarkerArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MenuEntry () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__MeshFile () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__msg__UVCoordinate () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__create () -> * mut visualization_msgs__msg__ImageMarker { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__destroy (msg : * mut visualization_msgs__msg__ImageMarker ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__Sequence__init (array : * mut visualization_msgs__msg__ImageMarker__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__Sequence__fini (array : * mut visualization_msgs__msg__ImageMarker__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__ImageMarker__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__ImageMarker__Sequence__destroy (array : * mut visualization_msgs__msg__ImageMarker__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__ImageMarker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__create () -> * mut visualization_msgs__msg__InteractiveMarker { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__destroy (msg : * mut visualization_msgs__msg__InteractiveMarker ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarker__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarker__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarker__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarker__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarker__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__create () -> * mut visualization_msgs__msg__InteractiveMarkerControl { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__destroy (msg : * mut visualization_msgs__msg__InteractiveMarkerControl ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarkerControl__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarkerControl__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarkerControl__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerControl__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarkerControl__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerControl () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__create () -> * mut visualization_msgs__msg__InteractiveMarkerFeedback { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__destroy (msg : * mut visualization_msgs__msg__InteractiveMarkerFeedback ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerFeedback__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarkerFeedback__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerFeedback () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__create () -> * mut visualization_msgs__msg__InteractiveMarkerInit { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__destroy (msg : * mut visualization_msgs__msg__InteractiveMarkerInit ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarkerInit__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarkerInit__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarkerInit__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerInit__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarkerInit__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerInit () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__create () -> * mut visualization_msgs__msg__InteractiveMarkerPose { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__destroy (msg : * mut visualization_msgs__msg__InteractiveMarkerPose ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarkerPose__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarkerPose__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarkerPose__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerPose__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarkerPose__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerPose () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__create () -> * mut visualization_msgs__msg__InteractiveMarkerUpdate { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__destroy (msg : * mut visualization_msgs__msg__InteractiveMarkerUpdate ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__init (array : * mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__fini (array : * mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__InteractiveMarkerUpdate__Sequence__destroy (array : * mut visualization_msgs__msg__InteractiveMarkerUpdate__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__InteractiveMarkerUpdate () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__create () -> * mut visualization_msgs__msg__Marker { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__destroy (msg : * mut visualization_msgs__msg__Marker) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__Sequence__init (array : * mut visualization_msgs__msg__Marker__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__Sequence__fini (array : * mut visualization_msgs__msg__Marker__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__Marker__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__Marker__Sequence__destroy (array : * mut visualization_msgs__msg__Marker__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__Marker () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__create () -> * mut visualization_msgs__msg__MarkerArray { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__destroy (msg : * mut visualization_msgs__msg__MarkerArray ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__Sequence__init (array : * mut visualization_msgs__msg__MarkerArray__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__Sequence__fini (array : * mut visualization_msgs__msg__MarkerArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__MarkerArray__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MarkerArray__Sequence__destroy (array : * mut visualization_msgs__msg__MarkerArray__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MarkerArray () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__create () -> * mut visualization_msgs__msg__MenuEntry { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__destroy (msg : * mut visualization_msgs__msg__MenuEntry ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__Sequence__init (array : * mut visualization_msgs__msg__MenuEntry__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__Sequence__fini (array : * mut visualization_msgs__msg__MenuEntry__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__MenuEntry__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MenuEntry__Sequence__destroy (array : * mut visualization_msgs__msg__MenuEntry__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MenuEntry () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__create () -> * mut visualization_msgs__msg__MeshFile { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__destroy (msg : * mut visualization_msgs__msg__MeshFile) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__Sequence__init (array : * mut visualization_msgs__msg__MeshFile__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__Sequence__fini (array : * mut visualization_msgs__msg__MeshFile__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__MeshFile__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__MeshFile__Sequence__destroy (array : * mut visualization_msgs__msg__MeshFile__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__MeshFile () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__create () -> * mut visualization_msgs__msg__UVCoordinate { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__destroy (msg : * mut visualization_msgs__msg__UVCoordinate ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__Sequence__init (array : * mut visualization_msgs__msg__UVCoordinate__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__Sequence__fini (array : * mut visualization_msgs__msg__UVCoordinate__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__Sequence__create (size : usize ,) -> * mut visualization_msgs__msg__UVCoordinate__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__msg__UVCoordinate__Sequence__destroy (array : * mut visualization_msgs__msg__UVCoordinate__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__msg__UVCoordinate () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_introspection_c__get_service_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers () -> * const rosidl_service_type_support_t { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__create () -> * mut visualization_msgs__srv__GetInteractiveMarkers_Request { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__destroy (msg : * mut visualization_msgs__srv__GetInteractiveMarkers_Request ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__init (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__fini (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__create (size : usize ,) -> * mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence__destroy (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Request__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__create () -> * mut visualization_msgs__srv__GetInteractiveMarkers_Response { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__destroy (msg : * mut visualization_msgs__srv__GetInteractiveMarkers_Response ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__init (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence , size : usize ,) -> bool { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__fini (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__create (size : usize ,) -> * mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence { todo ! () } # [allow (unused)] pub fn visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence__destroy (array : * mut visualization_msgs__srv__GetInteractiveMarkers_Response__Sequence ,) { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Request () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_message_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers_Response () -> * const rosidl_message_type_support_t { todo ! () } # [allow (unused)] pub fn rosidl_typesupport_c__get_service_type_support_handle__visualization_msgs__srv__GetInteractiveMarkers () -> * const rosidl_service_type_support_t { todo ! () } \ No newline at end of file diff --git a/patches/r2r_msg_gen-0.9.5/bindings/msg_includes.h b/patches/r2r_msg_gen-0.9.5/bindings/msg_includes.h new file mode 100644 index 0000000000..ace06a3759 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/bindings/msg_includes.h @@ -0,0 +1,362 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/patches/r2r_msg_gen-0.9.5/build.rs b/patches/r2r_msg_gen-0.9.5/build.rs new file mode 100644 index 0000000000..2013606c70 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/build.rs @@ -0,0 +1,557 @@ +use bindgen::Bindings; +use itertools::{chain, iproduct, Either, Itertools}; +use quote::{format_ident, quote}; +use r2r_common::{camel_to_snake, RosMsg}; +use rayon::prelude::*; +use std::{ + env, fs, + fs::{File, OpenOptions}, + io::{prelude::*, BufWriter}, + mem, + path::{Path, PathBuf}, +}; + +const MSG_INCLUDES_FILENAME: &str = "msg_includes.h"; +const INTROSPECTION_FILENAME: &str = "introspection_functions.rs"; +const CONSTANTS_FILENAME: &str = "constants.rs"; +const BINDINGS_FILENAME: &str = "msg_bindings.rs"; +const BINDINGS_DOC_ONLY_FILENAME: &str = "msg_bindings_doc_only.rs"; +const GENERATED_FILES: &[&str] = &[ + MSG_INCLUDES_FILENAME, + INTROSPECTION_FILENAME, + CONSTANTS_FILENAME, + BINDINGS_FILENAME, + BINDINGS_DOC_ONLY_FILENAME, +]; +const SRV_SUFFICES: &[&str] = &["Request", "Response"]; +const ACTION_SUFFICES: &[&str] = &["Goal", "Result", "Feedback", "FeedbackMessage"]; + +fn main() { + r2r_common::print_cargo_watches(); + r2r_common::print_cargo_ros_distro(); + + let msg_list = r2r_common::get_wanted_messages(); + run_bindgen(&msg_list); + run_dynlink(&msg_list); +} + +fn run_bindgen(msg_list: &[RosMsg]) { + let env_hash = r2r_common::get_env_hash(); + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR")); + let bindgen_dir = out_dir.join(env_hash); + let mark_file = bindgen_dir.join("done"); + let save_dir = manifest_dir.join("bindings"); + + if cfg!(feature = "doc-only") { + // If "doc-only" feature is present, copy from $crate/bindings/* to OUT_DIR + eprintln!("Copy files from '{}' to '{}'", save_dir.display(), out_dir.display()); + + for filename in GENERATED_FILES { + let src = save_dir.join(filename); + let tgt = out_dir.join(filename); + fs::copy(&src, &tgt).unwrap(); + } + } else { + // If bindgen was done before, use cached files. + if !mark_file.exists() { + eprintln!("Generate bindings in '{}'", bindgen_dir.display()); + fs::create_dir_all(&bindgen_dir).unwrap(); + generate_bindings(&bindgen_dir, msg_list); + touch(&mark_file); + } else { + eprintln!("Used cached files in '{}'", bindgen_dir.display()); + } + + for filename in GENERATED_FILES { + let src = bindgen_dir.join(filename); + let tgt = out_dir.join(filename); + fs::copy(&src, &tgt).unwrap(); + } + + #[cfg(feature = "save-bindgen")] + { + fs::create_dir_all(&save_dir).unwrap(); + + for filename in GENERATED_FILES { + let src = bindgen_dir.join(filename); + let tgt = save_dir.join(filename); + fs::copy(&src, &tgt).unwrap(); + } + } + } +} + +fn generate_bindings(bindgen_dir: &Path, msg_list: &[RosMsg]) { + // Run codegen in parallel. + rayon::scope(|scope| { + scope.spawn(|_| { + generate_includes(bindgen_dir, msg_list); + let bindings = generate_bindings_file(bindgen_dir); + generate_constants(bindgen_dir, msg_list, &bindings); + }); + scope.spawn(|_| { + generate_introspecion_map(bindgen_dir, msg_list); + }); + }); +} + +fn generate_includes(bindgen_dir: &Path, msg_list: &[RosMsg]) { + let msg_includes_file = bindgen_dir.join(MSG_INCLUDES_FILENAME); + + // Generate a C include line for each message type. + let mut include_lines: Vec<_> = msg_list + .par_iter() + .flat_map(|msg| { + let RosMsg { + name, + module, + prefix, + .. + } = msg; + + // filename is certainly CamelCase -> snake_case. convert + let include_filename = camel_to_snake(name); + + [ + format!("#include <{module}/{prefix}/{include_filename}.h>"), + format!( + "#include <{module}/{prefix}/detail/\ + {include_filename}__rosidl_typesupport_introspection_c.h>" + ), + ] + }) + .collect(); + + // Sort the lines. + include_lines.par_sort(); + + // Write the file content + let mut writer = BufWriter::new(File::create(msg_includes_file).unwrap()); + for line in include_lines { + writeln!(writer, "{line}").unwrap(); + } +} + +fn generate_introspecion_map(bindgen_dir: &Path, msg_list: &[RosMsg]) { + let introspection_file = bindgen_dir.join(INTROSPECTION_FILENAME); + + let mut entries: Vec<_> = msg_list + .par_iter() + .flat_map(|msg| { + let RosMsg { + module, + prefix, + name, + } = msg; + + match prefix.as_str() { + "srv" => SRV_SUFFICES + .iter() + .map(|s| { + let key = format!("{module}__{prefix}__{name}_{s}"); + let ident = format!( + "rosidl_typesupport_introspection_c__get_message_type_support_handle__\ + {module}__\ + {prefix}__\ + {name}_\ + {s}" + ); + (key, ident) + }) + .collect(), + "action" => { + let iter1 = ACTION_SUFFICES.iter().map(|s| { + let key = format!("{module}__{prefix}__{name}_{s}"); + let ident = format!( + "rosidl_typesupport_introspection_c__\ + get_message_type_support_handle__\ + {module}__\ + {prefix}__\ + {name}_\ + {s}", + ); + (key, ident) + }); + + // "internal" services + let iter2 = + iproduct!(["SendGoal", "GetResult"], SRV_SUFFICES).map(move |(srv, s)| { + // TODO: refactor this is copy paste from services... + let msgname = format!("{name}_{srv}_{s}"); + let key = format!("{module}__{prefix}__{msgname}"); + let ident = format!( + "rosidl_typesupport_introspection_c__\ + get_message_type_support_handle__\ + {module}__\ + {prefix}__\ + {msgname}" + ); + (key, ident) + }); + + chain!(iter1, iter2) + .map(|(key, ident)| (key, ident)) + .collect() + } + "msg" => { + let key = format!("{module}__{prefix}__{name}"); + let ident = format!( + "rosidl_typesupport_introspection_c__\ + get_message_type_support_handle__\ + {module}__\ + {prefix}__\ + {name}" + ); + vec![(key, ident)] + } + _ => unreachable!(), + } + }) + .map(|(key, func_str)| { + // Generate a hashmap entry + let func_ident = format_ident!("{func_str}"); + let tokens = quote! { #key => #func_ident as IntrospectionFn }; + + // force_send to workaround !Send + (key, unsafe { force_send(tokens) }) + }) + .collect(); + + // Sort the entries by key + entries.par_sort_by_cached_key(|(key, _)| key.to_string()); + + let entries = entries.into_iter().map(|(_, tokens)| tokens.unwrap()); + + // Write the file content + let introspecion_map = quote! { + #[cfg(feature = "doc-only")] + type IntrospectionFn = fn() -> *const rosidl_message_type_support_t; + + #[cfg(not(feature = "doc-only"))] + type IntrospectionFn = unsafe extern "C" fn() -> *const rosidl_message_type_support_t; + + #[cfg(not(feature = "doc-only"))] + static INTROSPECTION_FNS: phf::Map<&'static str, IntrospectionFn> = phf::phf_map! { + #(#entries),* + }; + }; + + let mut writer = BufWriter::new(File::create(introspection_file).unwrap()); + writeln!(&mut writer, "{}", introspecion_map).unwrap(); +} + +fn generate_bindings_file(bindgen_dir: &Path) -> Bindings { + let msg_includes_file = bindgen_dir.join(MSG_INCLUDES_FILENAME); + let bindings_file = bindgen_dir.join(BINDINGS_FILENAME); + let bindings_doc_only_file = bindgen_dir.join(BINDINGS_DOC_ONLY_FILENAME); + + let builder = r2r_common::setup_bindgen_builder() + .header(msg_includes_file.to_str().unwrap()) + .derive_copy(false) + .allowlist_function("rosidl_typesupport_c__.*") + .allowlist_function("rosidl_typesupport_introspection_c__.*") + .allowlist_function(r"[\w_]*__(msg|srv|action)__[\w_]*__(create|destroy)") + .allowlist_function(r"[\w_]*__(msg|srv|action)__[\w_]*__Sequence__(init|fini)") + .allowlist_var(r"[\w_]*__(msg|srv|action)__[\w_]*__[\w_]*") + // blacklist types that are handled by rcl bindings + .blocklist_type("rosidl_message_type_support_t") + .blocklist_type("rosidl_service_type_support_t") + .blocklist_type("rosidl_action_type_support_t") + .blocklist_type("rosidl_runtime_c__String") + .blocklist_type("rosidl_runtime_c__String__Sequence") + .blocklist_type("rosidl_runtime_c__U16String") + .blocklist_type("rosidl_runtime_c__U16String__Sequence") + .blocklist_type("rosidl_runtime_c__float32__Sequence") + .blocklist_type("rosidl_runtime_c__float__Sequence") + .blocklist_type("rosidl_runtime_c__float64__Sequence") + .blocklist_type("rosidl_runtime_c__double__Sequence") + .blocklist_type("rosidl_runtime_c__long_double__Sequence") + .blocklist_type("rosidl_runtime_c__char__Sequence") + .blocklist_type("rosidl_runtime_c__wchar__Sequence") + .blocklist_type("rosidl_runtime_c__boolean__Sequence") + .blocklist_type("rosidl_runtime_c__octet__Sequence") + .blocklist_type("rosidl_runtime_c__uint8__Sequence") + .blocklist_type("rosidl_runtime_c__int8__Sequence") + .blocklist_type("rosidl_runtime_c__uint16__Sequence") + .blocklist_type("rosidl_runtime_c__int16__Sequence") + .blocklist_type("rosidl_runtime_c__uint32__Sequence") + .blocklist_type("rosidl_runtime_c__int32__Sequence") + .blocklist_type("rosidl_runtime_c__uint64__Sequence") + .blocklist_type("rosidl_runtime_c__int64__Sequence") + .size_t_is_usize(true) + .no_debug("_OSUnaligned.*") + .generate_comments(false) + .merge_extern_blocks(true) + .default_enum_style(bindgen::EnumVariation::Rust { + non_exhaustive: false, + }); + + let bindings = builder.generate().expect("Unable to generate bindings"); + bindings + .write_to_file(&bindings_file) + .expect("Couldn't write bindings!"); + + // #[cfg(feature = "save-bindgen")] + { + let content = fs::read_to_string(bindings_file).unwrap(); + let file = syn::parse_file(&content).expect("syn::parse_file() failed"); + + let new_items: Vec = file + .items + .into_iter() + .flat_map(|item| match item { + syn::Item::ForeignMod(foreign_mod) => { + let Some(abi_name) = foreign_mod.abi.name.as_ref() else { + return vec![syn::Item::ForeignMod(foreign_mod)]; + }; + + if abi_name.value() != "C" { + return vec![syn::Item::ForeignMod(foreign_mod)]; + } + + let (generated_funcs, remaining_items): (Vec<_>, Vec<_>) = foreign_mod + .items + .into_iter() + .partition_map(|item| match item { + syn::ForeignItem::Fn(fn_) => { + let syn::ForeignItemFn { + attrs, + vis, + sig, + semi_token: _, + } = fn_; + + let new_fn: syn::ItemFn = syn::parse2(quote! { + #(#attrs)* + #[allow(unused)] + #vis #sig { todo!() } + }) + .unwrap(); + + Either::Left(new_fn) + } + item => Either::Right(item), + }); + + let new_foreign_mod = syn::Item::ForeignMod(syn::ItemForeignMod { + items: remaining_items, + ..foreign_mod + }); + let new_func_items = generated_funcs.into_iter().map(syn::Item::Fn); + + chain!([new_foreign_mod], new_func_items).collect() + } + item => vec![item], + }) + .collect(); + + let new_file = syn::File { + items: new_items, + ..file + }; + let new_file = quote! { #new_file }; + + let mut writer = BufWriter::new(File::create(bindings_doc_only_file).unwrap()); + write!(writer, "{}", new_file).expect("Couldn't write bindings!"); + writer.flush().unwrap(); + } + + bindings +} + +fn generate_constants(bindgen_dir: &Path, msg_list: &[RosMsg], bindings: &Bindings) { + let constants_file = bindgen_dir.join(CONSTANTS_FILENAME); + + // Turn the source string into tokens. + let tokens: syn::File = + syn::parse_str(&bindings.to_string()).expect("Unable to parse generated bindings"); + + // Workaround !Send + let items: &[force_send_sync::SendSync] = + unsafe { mem::transmute(tokens.items.as_slice()) }; + + /// The key is used to index constant items. + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] + struct Key { + pub module: String, + pub prefix: String, + pub name: String, + + /// Suffix is None if prefix is "msg". Otherwise, it's not None. + pub suffix: Option, + } + + // find all lines which look suspiciosly like a constant. + let mut constants: Vec<_> = items + .par_iter() + .filter_map(|item| { + // Filter out non-const items. + let syn::Item::Const(item) = &**item else { + return None; + }; + + // Filter out constants ending with "__MAX_SIZE" or "__MAX_STRING_SIZE". + let ident = item.ident.to_string(); + if ident.ends_with("__MAX_SIZE") || ident.ends_with("__MAX_STRING_SIZE") { + return None; + } + + // Create the key for the constant. + let (key, const_name) = { + let (module, remain) = ident.split_once("__")?; + let (prefix, remain) = remain.split_once("__")?; + let (name_and_suffix, const_name) = remain.split_once("__")?; + let (name, suffix) = match name_and_suffix.rsplit_once('_') { + Some((name, suffix)) => (name, Some(suffix.to_string())), + None => (name_and_suffix, None), + }; + + if let Some(suffix) = &suffix { + if !SRV_SUFFICES.contains(&suffix.as_str()) + && !ACTION_SUFFICES.contains(&suffix.as_str()) + { + return None; + } + } + + let key = Key { + module: module.to_string(), + prefix: prefix.to_string(), + name: name.to_string(), + suffix, + }; + + (key, const_name) + }; + + // Generate the entry for the constant. + let typ = &item.ty; + let entry = (const_name.to_string(), quote! { #typ }.to_string()); + Some((key, entry)) + }) + .collect(); + + // Sort the constants to enable later binary range search. + constants.par_sort_unstable(); + + let mut entries: Vec<_> = msg_list + .par_iter() + .flat_map(|msg| { + // Generate a key for each message type. + + let RosMsg { + module, + prefix, + name, + } = msg; + + match prefix.as_str() { + "msg" => vec![Key { + module: module.to_string(), + prefix: prefix.to_string(), + name: name.to_string(), + suffix: None, + }], + "srv" => SRV_SUFFICES + .iter() + .map(|suffix| Key { + module: module.to_string(), + prefix: prefix.to_string(), + name: name.to_string(), + suffix: Some(suffix.to_string()), + }) + .collect(), + "action" => ACTION_SUFFICES + .iter() + .map(|suffix| Key { + module: module.to_string(), + prefix: prefix.to_string(), + name: name.to_string(), + suffix: Some(suffix.to_string()), + }) + .collect(), + _ => unreachable!(), + } + }) + .filter_map(|key| { + // Search for items with the same key using binary searches. + let range = { + let idx = constants.partition_point(|(other, _)| other < &key); + let len = constants + .get(idx..)? + .partition_point(|(other, _)| other == &key); + if len == 0 { + return None; + } + idx..(idx + len) + }; + + let Key { + module, + prefix, + name, + suffix, + } = key; + let msg = match suffix { + Some(suffix) => format!("{module}__{prefix}__{name}_{suffix}"), + None => format!("{module}__{prefix}__{name}"), + }; + + Some((msg, &constants[range])) + }) + .map(|(msg, msg_constants)| { + // Generate map entries. + let consts = msg_constants + .iter() + .map(|(_, (const_name, typ))| quote! { (#const_name, #typ) }); + let entry = quote! { #msg => &[ #(#consts),* ] }; + + // Workaround !Send + (msg, unsafe { force_send(entry) }) + }) + .collect(); + + // Sort entries by message name + entries.par_sort_by_cached_key(|(msg, _)| msg.to_string()); + let entries = entries.into_iter().map(|(_, tokens)| tokens.unwrap()); + + // Write the file content. + let constants_map = quote! { + #[cfg(not(feature = "doc-only"))] + static CONSTANTS_MAP: phf::Map<&'static str, &[(&str, &str)]> = phf::phf_map! { + #(#entries),* + }; + }; + + let mut writer = BufWriter::new(File::create(constants_file).unwrap()); + writeln!(&mut writer, "{}", constants_map).unwrap(); +} + +#[cfg(feature = "doc-only")] +fn run_dynlink(_: &[RosMsg]) {} + +#[cfg(not(feature = "doc-only"))] +fn run_dynlink(msg_list: &[RosMsg]) { + r2r_common::print_cargo_link_search(); + + let msg_map = r2r_common::as_map(msg_list); + for module in msg_map.keys() { + println!("cargo:rustc-link-lib=dylib={}__rosidl_typesupport_c", module); + println!("cargo:rustc-link-lib=dylib={}__rosidl_typesupport_introspection_c", module); + println!("cargo:rustc-link-lib=dylib={}__rosidl_generator_c", module); + } +} + +fn touch(path: &Path) { + OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(path) + .unwrap_or_else(|_| panic!("Unable to create file '{}'", path.display())); +} + +unsafe fn force_send(value: T) -> force_send_sync::Send { + force_send_sync::Send::new(value) +} diff --git a/patches/r2r_msg_gen-0.9.5/src/introspection.rs b/patches/r2r_msg_gen-0.9.5/src/introspection.rs new file mode 100644 index 0000000000..6e33dc8d36 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/src/introspection.rs @@ -0,0 +1,256 @@ +use crate::{ + rosidl_message_type_support_t as CTypeSupport, + rosidl_typesupport_introspection_c__MessageMember as CMessageMember, + rosidl_typesupport_introspection_c__MessageMembers as CMessageMembers, rust_mangle, + type_support_data, +}; +use quote::quote; +use std::{ + borrow::Cow, + ffi::{c_char, CStr}, + mem, slice, +}; + +pub struct Introspection<'a> { + pub module: &'a str, + pub prefix: &'a str, + pub name: &'a str, + pub members: &'a [MessageMember], +} + +impl<'a> Introspection<'a> { + pub fn c_struct_name(&self) -> String { + let Self { + module, + prefix, + name, + .. + } = *self; + format!("{module}__{prefix}__{name}") + } +} + +#[repr(transparent)] +pub struct TypeSupport(CTypeSupport); + +impl TypeSupport { + pub unsafe fn introspection(&self) -> Introspection<'_> { + let members = (type_support_data(&self.0) as *const MessageMembers) + .as_ref() + .unwrap(); + let namespace = members.message_namespace(); + let name = members.message_name(); + let members = members.members(); + + let (module, remain) = namespace.split_once("__").unwrap(); + let (prefix, _) = remain.split_once("__").unwrap(); + + Introspection { + module, + prefix, + name, + members, + } + } +} + +#[repr(transparent)] +pub struct MessageMember(CMessageMember); + +impl MessageMember { + pub fn name(&self) -> &str { + unsafe { ptr_to_str(self.0.name_) } + } + + pub fn rust_name(&self) -> Cow<'_, str> { + rust_mangle(self.name()) + } + + pub fn type_id(&self) -> MemberType { + MemberType::from_type_id(self.0.type_id_).unwrap() + } + + pub fn string_upper_bound(&self) -> Option { + if self.type_id() == MemberType::String { + Some(self.0.string_upper_bound_ as usize) + } else { + None + } + } + + pub fn members(&self) -> Option<&TypeSupport> { + if self.type_id() != MemberType::Message { + return None; + } + + unsafe { + let ptr = self.0.members_ as *const TypeSupport; + let ref_ = ptr.as_ref().unwrap(); + Some(ref_) + } + } + + pub fn is_array(&self) -> bool { + self.0.is_array_ + } + + pub fn array_size(&self) -> Option { + if self.is_array() { + Some(self.0.array_size_) + } else { + None + } + } + + pub fn is_upper_bound(&self) -> Option { + if self.is_array() { + Some(self.0.is_upper_bound_) + } else { + None + } + } + + pub fn array_info(&self) -> Option { + self.0.is_array_.then(|| ArrayInfo { + size: self.0.array_size_, + is_upper_bound: self.0.is_upper_bound_, + }) + } + + pub fn offset(&self) -> usize { + self.0.offset_ as usize + } +} + +#[repr(transparent)] +pub struct MessageMembers(CMessageMembers); + +impl MessageMembers { + pub fn message_namespace(&self) -> &str { + unsafe { ptr_to_str(self.0.message_namespace_) } + } + + pub fn message_name(&self) -> &str { + unsafe { ptr_to_str(self.0.message_name_) } + } + + pub fn member_count(&self) -> usize { + self.0.member_count_ as usize + } + + pub fn size_of(&self) -> usize { + self.0.size_of_ as usize + } + + pub fn members(&self) -> &[MessageMember] { + unsafe { + let members: &[CMessageMember] = + slice::from_raw_parts(self.0.members_, self.member_count()); + mem::transmute(members) + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum MemberType { + Bool, + I8, + I16, + I32, + I64, + U8, + U16, + U32, + U64, + U128, + F32, + F64, + Char, + WChar, + String, + WString, + Message, +} + +impl MemberType { + /// Get the enum variant for the type id. + /// + /// Because the c enum has been named between galactic and the + /// next release, we cannot know its name. therefor we use the + /// constants as is and hope we notice when they change. + /// + /// ```ignore + /// rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT = 1, + /// rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE = 2, + /// rosidl_typesupport_introspection_c__ROS_TYPE_LONG_DOUBLE = 3, + /// rosidl_typesupport_introspection_c__ROS_TYPE_CHAR = 4, + /// rosidl_typesupport_introspection_c__ROS_TYPE_WCHAR = 5, + /// rosidl_typesupport_introspection_c__ROS_TYPE_BOOLEAN = 6, + /// rosidl_typesupport_introspection_c__ROS_TYPE_OCTET = 7, + /// rosidl_typesupport_introspection_c__ROS_TYPE_UINT8 = 8, + /// rosidl_typesupport_introspection_c__ROS_TYPE_INT8 = 9, + /// rosidl_typesupport_introspection_c__ROS_TYPE_UINT16 = 10, + /// rosidl_typesupport_introspection_c__ROS_TYPE_INT16 = 11, + /// rosidl_typesupport_introspection_c__ROS_TYPE_UINT32 = 12, + /// rosidl_typesupport_introspection_c__ROS_TYPE_INT32 = 13, + /// rosidl_typesupport_introspection_c__ROS_TYPE_UINT64 = 14, + /// rosidl_typesupport_introspection_c__ROS_TYPE_INT64 = 15, + /// rosidl_typesupport_introspection_c__ROS_TYPE_STRING = 16, + /// rosidl_typesupport_introspection_c__ROS_TYPE_WSTRING = 17, + /// rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE = 18, + /// ``` + pub fn from_type_id(id: u8) -> Option { + Some(match id { + 1 => Self::F32, + 2 => Self::F64, + 3 => Self::U128, + 4 => Self::Char, + 5 => Self::WChar, + 6 => Self::Bool, + 7 | 8 => Self::U8, + 9 => Self::I8, + 10 => Self::U16, + 11 => Self::I16, + 12 => Self::U32, + 13 => Self::I32, + 14 => Self::U64, + 15 => Self::I64, + 16 => Self::String, + 17 => Self::WString, + 18 => Self::Message, + _ => return None, + }) + } + + pub fn to_rust_type(&self) -> proc_macro2::TokenStream { + match self { + MemberType::Bool => quote! { bool }, + MemberType::I8 => quote! { i8 }, + MemberType::I16 => quote! { i16 }, + MemberType::I32 => quote! { i32 }, + MemberType::I64 => quote! { i64 }, + MemberType::U8 => quote! { u8 }, + MemberType::U16 => quote! { u16 }, + MemberType::U32 => quote! { u32 }, + MemberType::U64 => quote! { u64 }, + MemberType::U128 => quote! { u128 }, + MemberType::F32 => quote! { f32 }, + MemberType::F64 => quote! { f64 }, + MemberType::Char => quote! { std::ffi::c_char }, + MemberType::WChar => quote! { u16 }, + MemberType::String => quote! { std::string::String }, + MemberType::WString => quote! { std::string::String }, + MemberType::Message => quote! { message }, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct ArrayInfo { + pub size: usize, + pub is_upper_bound: bool, +} + +unsafe fn ptr_to_str(ptr: *const c_char) -> &'static str { + CStr::from_ptr(ptr).to_str().unwrap() +} diff --git a/patches/r2r_msg_gen-0.9.5/src/lib.rs b/patches/r2r_msg_gen-0.9.5/src/lib.rs new file mode 100644 index 0000000000..bc927881b6 --- /dev/null +++ b/patches/r2r_msg_gen-0.9.5/src/lib.rs @@ -0,0 +1,944 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(improper_ctypes)] +#![allow(dead_code)] +#![allow(clippy::all)] + +#[cfg(feature = "doc-only")] +include!(concat!(env!("OUT_DIR"), "/msg_bindings_doc_only.rs")); + +#[cfg(not(feature = "doc-only"))] +include!(concat!(env!("OUT_DIR"), "/msg_bindings.rs")); + +include!(concat!(env!("OUT_DIR"), "/introspection_functions.rs")); +include!(concat!(env!("OUT_DIR"), "/constants.rs")); + +mod introspection; + +#[cfg(not(feature = "doc-only"))] +use { + crate::introspection::{MemberType, MessageMember}, + rayon::prelude::*, + std::mem, +}; + +use quote::{format_ident, quote}; +use r2r_common::RosMsg; +use r2r_rcl::*; + +use std::{ + borrow::Cow, + ffi::CStr, + os::raw::{c_char, c_void}, +}; + +use std::slice; + +#[repr(C)] +struct RosidlMessageTypeSupportPrefix { + _typesupport_identifier: *const c_char, + data: *const c_void, +} + +unsafe fn type_support_data(ptr: *const rosidl_message_type_support_t) -> *const c_void { + (*(ptr as *const RosidlMessageTypeSupportPrefix)).data +} + +// Copied from bindgen. +// https://github.com/rust-lang/rust-bindgen/blob/e68b8c0e2b2ceeb42c35e74bd9344a1a99ec2e0c/src/ir/context.rs#L817 +fn rust_mangle<'a>(name: &'a str) -> Cow<'a, str> { + if name.contains('@') + || name.contains('?') + || name.contains('$') + || matches!( + name, + "abstract" + | "alignof" + | "as" + | "async" + | "await" + | "become" + | "box" + | "break" + | "const" + | "continue" + | "crate" + | "do" + | "dyn" + | "else" + | "enum" + | "extern" + | "false" + | "final" + | "fn" + | "for" + | "if" + | "impl" + | "in" + | "let" + | "loop" + | "macro" + | "match" + | "mod" + | "move" + | "mut" + | "offsetof" + | "override" + | "priv" + | "proc" + | "pub" + | "pure" + | "ref" + | "return" + | "Self" + | "self" + | "sizeof" + | "static" + | "struct" + | "super" + | "trait" + | "true" + | "try" + | "type" + | "typeof" + | "unsafe" + | "unsized" + | "use" + | "virtual" + | "where" + | "while" + | "yield" + | "str" + | "bool" + | "f32" + | "f64" + | "usize" + | "isize" + | "u128" + | "i128" + | "u64" + | "i64" + | "u32" + | "i32" + | "u16" + | "i16" + | "u8" + | "i8" + | "_" + ) + { + let mut s = name.to_owned(); + s = s.replace('@', "_"); + s = s.replace('?', "_"); + s = s.replace('$', "_"); + s.push('_'); + return Cow::Owned(s); + } + Cow::Borrowed(name) +} + +unsafe fn introspection<'a>( + ptr: *const rosidl_message_type_support_t, +) -> ( + String, + String, + String, + String, + &'a [rosidl_typesupport_introspection_c__MessageMember], +) { + let members = + type_support_data(ptr) as *const rosidl_typesupport_introspection_c__MessageMembers; + let namespace = CStr::from_ptr((*members).message_namespace_) + .to_str() + .unwrap(); + let name = CStr::from_ptr((*members).message_name_).to_str().unwrap(); + let nn: Vec<&str> = namespace.split("__").into_iter().take(2).collect(); + let (module, prefix) = (nn[0], nn[1]); + let c_struct = format!( + "{module}__{prefix}__{msgname}", + module = module, + prefix = prefix, + msgname = name + ); + let memberslice = slice::from_raw_parts((*members).members_, (*members).member_count_ as usize); + ( + module.to_owned(), + prefix.to_owned(), + name.to_owned(), + c_struct, + memberslice, + ) +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_rust_service( + module_: &str, + prefix_: &str, + name_: &str, +) -> proc_macro2::TokenStream { + let ident = format_ident!( + "rosidl_typesupport_c__\ + get_service_type_support_handle__\ + {module_}__\ + {prefix_}__\ + {name_}" + ); + + quote!( + #[derive(Clone,Debug,PartialEq,Serialize,Deserialize)] + pub struct Service(); + impl WrappedServiceTypeSupport for Service { + type Request = Request; + type Response = Response; + + fn get_ts() -> &'static rosidl_service_type_support_t { + unsafe { + &* #ident () + } + } + } + + ) +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_rust_action(module_: &str, prefix_: &str, name_: &str) -> proc_macro2::TokenStream { + let ident = format_ident!( + "rosidl_typesupport_c__\ + get_action_type_support_handle__\ + {module_}__\ + {prefix_}__\ + {name_}" + ); + + quote! { + #[derive(Clone,Debug,PartialEq,Serialize,Deserialize)] + pub struct Action(); + impl WrappedActionTypeSupport for Action { + type Goal = Goal; + type Result = Result; + type Feedback = Feedback; + + // internal structs + type FeedbackMessage = FeedbackMessage; + type SendGoal = SendGoal::Service; + type GetResult = GetResult::Service; + + fn get_ts() -> &'static rosidl_action_type_support_t { + unsafe { + &* #ident () + } + } + + fn make_goal_request_msg(goal_id: unique_identifier_msgs::msg::UUID, goal: Goal) -> SendGoal::Request { + SendGoal::Request { + goal_id, + goal + } + } + + fn make_goal_response_msg(accepted: bool, stamp: builtin_interfaces::msg::Time) -> SendGoal::Response { + SendGoal::Response { + accepted, + stamp + } + } + + fn make_feedback_msg(goal_id: unique_identifier_msgs::msg::UUID, feedback: Feedback) -> FeedbackMessage { + FeedbackMessage { + goal_id, + feedback + } + } + + fn make_result_request_msg(goal_id: unique_identifier_msgs::msg::UUID) -> GetResult::Request { + GetResult::Request { + goal_id, + } + } + + fn make_result_response_msg(status: i8, result: Result) -> GetResult::Response { + GetResult::Response { + status, + result, + } + } + + fn destructure_goal_request_msg(msg: SendGoal::Request) -> (unique_identifier_msgs::msg::UUID, Goal) { + (msg.goal_id, msg.goal) + } + + fn destructure_goal_response_msg(msg: SendGoal::Response) -> (bool, builtin_interfaces::msg::Time) { + (msg.accepted, msg.stamp) + } + + fn destructure_feedback_msg(msg: FeedbackMessage) -> (unique_identifier_msgs::msg::UUID, Feedback) { + (msg.goal_id, msg.feedback) + } + + fn destructure_result_response_msg(msg: GetResult::Response) -> (i8, Result) { + (msg.status, msg.result) + } + + fn destructure_result_request_msg(msg: GetResult::Request) -> unique_identifier_msgs::msg::UUID { + msg.goal_id + } + } + } +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_rust_msg(module_: &str, prefix_: &str, name_: &str) -> proc_macro2::TokenStream { + let key = format!("{}__{}__{}", module_, prefix_, name_); + let func = *INTROSPECTION_FNS + .get(key.as_str()) + .unwrap_or_else(|| panic!("code generation error: {}", key)); + let ptr = unsafe { func() }; + + let (module, prefix, name, c_struct, c_members) = unsafe { introspection(ptr) }; + // let members: &[MessageMember] = unsafe { mem::transmute(c_members) }; + assert_eq!(module, module_); + assert_eq!(prefix, prefix_); + assert_eq!(name, name_); + + let name = if ["srv", "action"].contains(&prefix.as_str()) { + // for srv, the message name is both the service name and _Request or _Respone + // we only want to keep the last part. + // same for actions with _Goal, _Result, _Feedback + // TODO: refactor... + // handle special case of ActionName_ServiceName_Response + let nn: Vec<&str> = name.splitn(3, '_').collect(); + if let [_mod_name, _srv_name, msg_name] = &nn[..] { + msg_name.to_string() + } else if let [_mod_name, msg_name] = &nn[..] { + msg_name.to_string() + } else { + panic!("malformed service name {}", name); + } + } else { + name + }; + + // let module = format_ident!("{module}"); + // let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + let c_struct = format_ident!("{c_struct}"); + + let fields = { + let fields: Vec<_> = c_members + .into_iter() + .filter_map(|c_member| { + let member: &MessageMember = unsafe { mem::transmute(c_member) }; + + let actual_field_name = member.name(); + let field_name = member.rust_name(); + let got_mangled = field_name != actual_field_name; + if field_name == "structure_needs_at_least_one_member" { + // Yay we can have empty structs in rust + return None; + } + + let field_name = format_ident!("{field_name}"); + + let rust_field_type = member.type_id(); + let rust_field_type = if rust_field_type == MemberType::Message { + let (module, prefix, name, _, _) = unsafe { introspection(c_member.members_) }; + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + + // hack here to rustify nested action type names + if prefix == "action" { + if let Some((n1, n2)) = name.rsplit_once("_") { + let n1 = format_ident!("{n1}"); + let n2 = format_ident!("{n2}"); + quote! { #module :: #prefix :: #n1 :: #n2 } + } else { + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name } + } + } else { + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name } + } + } else { + rust_field_type.to_rust_type() + }; + + let field = if c_member.is_array_ { + // if member.array_size_ > 0 { + // fixed size array + // format!("pub {}: [{};{}usize],\n",field_name, rust_field_type, array_size) + // actually lets use a vector anyway because its more convenient with traits. assert on the fixed size instead! + //} else { + // vector type + quote! { pub #field_name : Vec< #rust_field_type > } + //} + } else { + quote! { pub #field_name : #rust_field_type } + }; + + let attr = got_mangled.then(|| { + quote! { #[serde(rename = #actual_field_name )] } + }); + + Some(quote! { + #attr + #field + }) + }) + .collect(); + quote! { #(#fields),* } + }; + + let from_native = { + let fields = c_members.into_iter().filter_map(|c_member| { + let member: &MessageMember = unsafe { mem::transmute(c_member) }; + let field_name = member.rust_name(); + if field_name == "structure_needs_at_least_one_member" { + // Yay we can have empty structs in rust + return None; + } + let field_name = format_ident!("{field_name}"); + let rust_field_type = member.type_id(); + let array_info = member.array_info(); + + let fields = if let Some(array_info) = array_info { + if array_info.size > 0 && !array_info.is_upper_bound { + // these are plain arrays + // let is_upper_bound = member.is_upper_bound(); + // let array_size = array_info.size; + let fields1 = quote! { + // is_upper_bound_: #is_upper_bound, + // member.array_size_ : #array_size, + }; + + let field2 = match rust_field_type { + MemberType::Message => { + let (module, prefix, name, _, _) = + unsafe { introspection(c_member.members_) }; + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + + quote! { + #field_name: { + let vec: Vec<_> = msg + .#field_name + .iter() + .map(|s| #module :: #prefix :: #name :: from_native(s)) + .collect(); + vec + }, + } + } + MemberType::String | MemberType::WString => { + quote! { + #field_name : + msg. #field_name .iter().map(|s|s.to_str().to_owned()).collect(), + } + } + _ => { + quote! { + #field_name : msg. #field_name .to_vec(), + } + } + }; + + quote! { + #fields1 + #field2 + } + } else { + // these are __Sequence:s + // let is_upper_bound = member.is_upper_bound(); + // let array_size = array_info.size; + + let fields1 = quote! { + // is_upper_bound_: #is_upper_bound + // member.array_size_ : #array_size + }; + + let field2 = if rust_field_type == MemberType::Message { + let (module, prefix, name, _, _) = + unsafe { introspection(c_member.members_) }; + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + + quote! { + #field_name : { + let mut temp = Vec::with_capacity(msg. #field_name .size); + if msg. #field_name .data != std::ptr::null_mut() { + let slice = unsafe { + std::slice::from_raw_parts( + msg. #field_name .data, + msg. #field_name .size + ) + }; + for s in slice { + temp.push( #module :: #prefix :: #name :: from_native(s)); + } + } + temp + }, + } + } else { + quote! { + #field_name: msg. #field_name .to_vec(), + } + }; + + quote! { + #fields1 + #field2 + } + } + } else { + match rust_field_type { + MemberType::String | MemberType::WString => { + quote! { + #field_name: msg. #field_name .to_str().to_owned(), + } + } + MemberType::Message => { + let (module, prefix, name, _, _) = + unsafe { introspection(c_member.members_) }; + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + + // same hack as above to rustify message type names + if prefix == "action" { + let (srvname, msgname) = + name.rsplit_once("_").expect("ooops at from_native"); + let srvname = format_ident!("{srvname}"); + let msgname = format_ident!("{msgname}"); + + quote! { + #field_name: + #module :: + #prefix :: + #srvname :: + #msgname :: + from_native(&msg. #field_name ), + } + } else { + let name = format_ident!("{name}"); + + quote! { + #field_name : + #module :: #prefix :: #name ::from_native(&msg. #field_name), + } + } + } + _ => { + quote! { + #field_name : msg. #field_name, + } + } + } + }; + + Some(fields) + }); + // let name = name; + quote! { + fn from_native(#[allow(unused)] msg: &Self::CStruct) -> #name { + #name { + #(#fields)* + } + } + } + }; + + let copy_to_native = { + let stmts = c_members.into_iter().filter_map(|c_member| { + let member: &MessageMember = unsafe { mem::transmute(c_member) }; + let field_name_str = member.rust_name(); + if field_name_str == "structure_needs_at_least_one_member" { + // Yay we can have empty structs in rust + return None + } + let rust_field_type = member.type_id(); + let array_info = member.array_info(); + let field_name = format_ident!("{field_name_str}"); + + let stmts = if let Some(array_info) = array_info { + let array_size = array_info.size; + + if array_info.size > 0 && !array_info.is_upper_bound { + // these are plain arrays + // fixed size array, just copy but first check the size! + + let content = match rust_field_type { + MemberType::Message => { + quote! { + for (t, s) in msg. #field_name .iter_mut().zip(&self. #field_name ) { + s.copy_to_native(t); + } + } + } + MemberType::String | MemberType::WString => { + quote! { + for (t, s) in msg. #field_name .iter_mut().zip(&self. #field_name ) { + t.assign(&s); + } + } + } + _ => { + quote! { + msg. #field_name .copy_from_slice(&self. #field_name [.. #array_size ]); + } + } + }; + + quote! { + assert_eq!( + self. #field_name .len(), + #array_size , + "Field {} is fixed size of {}!", #field_name_str, #array_size + ); + #content + } + } else { + // these are __Sequence:s + + if rust_field_type == MemberType::Message { + let (_, _, _, c_struct, _) = unsafe { introspection(c_member.members_) }; + let init_func = format_ident!("{c_struct}__Sequence__init"); + let fini_func = format_ident!("{c_struct}__Sequence__fini"); + let field_name = format_ident!("{field_name}"); + + quote! { + unsafe { + #fini_func (&mut msg. #field_name); + #init_func (&mut msg. #field_name , self. #field_name .len()); + + if msg. #field_name .data != std::ptr::null_mut() { + let slice = std::slice::from_raw_parts_mut(msg. #field_name .data, msg. #field_name .size); + for (t, s) in slice.iter_mut().zip(&self. #field_name ) { + s.copy_to_native(t); + } + } + } + } + } else { + // extra assertion + let assert_stmt = array_info.is_upper_bound.then(|| { + quote! { + assert!( + self. #field_name .len() <= #array_size, + "Field {} is upper bounded by {}!", + #field_name_str, #array_size + ); + } + }); + + quote! { + #assert_stmt + msg. #field_name .update(&self. #field_name ); + } + } + } + } else { + match rust_field_type { + MemberType::String | MemberType::WString => { + quote! { + msg. #field_name .assign(&self. #field_name ); + } + } + MemberType::Message => { + quote! { + self. #field_name .copy_to_native(&mut msg. #field_name ); + } + } + _ => { + quote! { + msg. #field_name = self. #field_name; + } + } + } + }; + + Some(stmts) + }); + + quote! { + fn copy_to_native(&self, #[allow(unused)] msg: &mut Self::CStruct) { + #(#stmts)* + } + } + }; + + let typesupport = { + let type_support_handle = + format_ident!("rosidl_typesupport_c__get_message_type_support_handle__{c_struct}"); + let create_func = format_ident!("{c_struct}__create"); + let destroy_func = format_ident!("{c_struct}__destroy"); + + quote! { + impl WrappedTypesupport for #name { + type CStruct = #c_struct; + + fn get_ts() -> &'static rosidl_message_type_support_t { + unsafe { + &* #type_support_handle() + } + } + + fn create_msg() -> *mut #c_struct { + #[cfg(not(feature = "doc-only"))] + unsafe { + #create_func () + } + #[cfg(feature = "doc-only")] + #create_func () + } + + fn destroy_msg(msg: *mut #c_struct) -> () { + #[cfg(not(feature = "doc-only"))] + unsafe { + #destroy_func (msg) + }; + #[cfg(feature = "doc-only")] + #destroy_func (msg) + } + + #from_native + #copy_to_native + } + } + }; + + let impl_default = quote! { + impl Default for #name { + fn default() -> Self { + let msg_native = WrappedNativeMsg::< #name >::new(); + #name :: from_native(&msg_native) + } + } + }; + + let constant_items: Vec<_> = CONSTANTS_MAP + .get(&key) + .cloned() + .into_iter() + .flatten() + .map(|(const_name, typ)| { + let const_name = format_ident!("{const_name}"); + let value = format_ident!("{key}__{const_name}"); + if let Ok(mut typ) = syn::parse_str::>(typ) { + // If the constant is a reference, rustc needs it to be static. + // (see https://github.com/rust-lang/rust/issues/115010) + typ.lifetime = Some(syn::Lifetime::new( + "'static", + proc_macro2::Span::call_site(), + )); + quote! { pub const #const_name: #typ = #value; } + } else if let Ok(typ) = syn::parse_str::>(typ) { + // Value + quote! { pub const #const_name: #typ = #value; } + } else { + // Something else, hope for the best but will most likely fail to compile. + quote! { pub const #const_name: #typ = #value; } + } + }) + .collect(); + + let impl_constants = if constant_items.is_empty() { + quote! {} + } else { + quote! { + #[allow(non_upper_case_globals)] + impl #name { + #(#constant_items)* + } + } + }; + + quote! { + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] + #[serde(default)] + pub struct #name { + #fields + } + + #typesupport + #impl_default + #impl_constants + } +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_untyped_helper(msgs: &[RosMsg]) -> proc_macro2::TokenStream { + let (funcs, entries): (Vec<_>, Vec<_>) = msgs + .into_par_iter() + .filter(|msg| !["srv", "action"].contains(&msg.prefix.as_str())) + .map(|msg| { + let RosMsg { + module, + prefix, + name, + } = msg; + let typename = type_name(&msg); + let rustname = { + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name } + }; + + let func_ident = + format_ident!("new_wrapped_native_msg_untyped_{module}_{prefix}_{name}"); + let func = quote! { + #[allow(non_snake_case)] + fn #func_ident() -> WrappedNativeMsgUntyped { + WrappedNativeMsgUntyped::new::< #rustname >() + } + }; + let entry = quote! { #typename => #func_ident }; + + (unsafe { force_send(func) }, unsafe { force_send(entry) }) + }) + .unzip(); + let funcs = funcs.into_iter().map(|tokens| tokens.unwrap()); + let entries = entries.into_iter().map(|tokens| tokens.unwrap()); + + quote! { + impl WrappedNativeMsgUntyped { + pub fn new_from(typename: &str) -> Result { + #(#funcs)* + + static MAP: phf::Map<&'static str, fn() -> WrappedNativeMsgUntyped> = phf::phf_map! { #(#entries),* }; + + let func = MAP.get(typename) + .ok_or_else(|| Error::InvalidMessageType{ msgtype: typename.into() })?; + Ok(func()) + } + } + } +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_untyped_service_helper(msgs: &[RosMsg]) -> proc_macro2::TokenStream { + let (funcs, entries): (Vec<_>, Vec<_>) = msgs + .into_par_iter() + .filter(|msg| msg.prefix == "srv") + .map(|msg| { + let RosMsg { + module, + prefix, + name, + } = msg; + let typename = type_name(&msg); + let rustname = { + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name :: Service } + }; + let func_ident = format_ident!("new_untyped_service_support_{module}_{prefix}_{name}"); + + let func = quote! { + #[allow(non_snake_case)] + fn #func_ident() -> UntypedServiceSupport { + UntypedServiceSupport::new::< #rustname >() + } + }; + let entry = quote! { #typename => #func_ident }; + + unsafe { (force_send(func), force_send(entry)) } + }) + .unzip(); + let funcs = funcs.into_iter().map(|tokens| tokens.unwrap()); + let entries = entries.into_iter().map(|tokens| tokens.unwrap()); + + quote! { + impl UntypedServiceSupport { + pub fn new_from(typename: &str) -> Result { + #(#funcs)* + + static MAP: phf::Map<&'static str, fn() -> UntypedServiceSupport> = phf::phf_map! { #(#entries),* }; + + let func = MAP.get(typename) + .ok_or_else(|| Error::InvalidMessageType{ msgtype: typename.into() })?; + Ok(func()) + } + } + } +} + +#[cfg(not(feature = "doc-only"))] +pub fn generate_untyped_action_helper(msgs: &[RosMsg]) -> proc_macro2::TokenStream { + let (funcs, entries): (Vec<_>, Vec<_>) = msgs + .into_par_iter() + .filter(|msg| msg.prefix == "action") + .map(|msg| { + let RosMsg { + module, + prefix, + name, + } = msg; + let typename = type_name(&msg); + let rustname = { + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name :: Action } + }; + let func_ident = format_ident!("new_untyped_service_support_{module}_{prefix}_{name}"); + + let func = quote! { + #[allow(non_snake_case)] + fn #func_ident() -> UntypedActionSupport { + UntypedActionSupport::new::< #rustname >() + } + }; + let entry = quote! { #typename => #func_ident }; + + unsafe { (force_send(func), force_send(entry)) } + }) + .unzip(); + + let funcs = funcs.into_iter().map(|tokens| tokens.unwrap()); + let entries = entries.into_iter().map(|tokens| tokens.unwrap()); + + quote! { + impl UntypedActionSupport { + pub fn new_from(typename: &str) -> Result { + #(#funcs)* + + static MAP: phf::Map<&'static str, fn() -> UntypedActionSupport> = phf::phf_map! { #(#entries),* }; + + let func = MAP.get(typename) + .ok_or_else(|| Error::InvalidMessageType{ msgtype: typename.into() })?; + Ok(func()) + } + } + } +} + +fn type_name(msg: &RosMsg) -> String { + let RosMsg { + module, + prefix, + name, + } = msg; + format!("{module}/{prefix}/{name}") +} + +fn rust_name(msg: &RosMsg) -> proc_macro2::TokenStream { + let RosMsg { + module, + prefix, + name, + } = msg; + let module = format_ident!("{module}"); + let prefix = format_ident!("{prefix}"); + let name = format_ident!("{name}"); + quote! { #module :: #prefix :: #name :: Action } +} + +unsafe fn force_send(value: T) -> force_send_sync::Send { + force_send_sync::Send::new(value) +} From 0969c991f3f6e1c088ed9d988966357b23b7c54e Mon Sep 17 00:00:00 2001 From: Lea Wedmann <116641586+ayin21@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:18:29 +0200 Subject: [PATCH 40/48] git include add src/lib/launch include: subdir: "src/lib/launch" remote: "https://github.com/ros2/launch.git" branch: "jazzy" commit: "e74fa72f5c64bedd9ce252bf3846e7442b45c791" git-include-version: 0.1.3 --- src/lib/launch/.github/ISSUE_TEMPLATE.md | 45 ++ src/lib/launch/.gitignore | 6 + src/lib/launch/.gitrepo | 13 + src/lib/launch/CONTRIBUTING.md | 18 + src/lib/launch/LICENSE | 237 ++++++ src/lib/launch/launch/CHANGELOG.rst | 542 +++++++++++++ src/lib/launch/launch/conftest.py | 25 + src/lib/launch/launch/doc/.gitignore | 1 + src/lib/launch/launch/doc/Makefile | 20 + src/lib/launch/launch/doc/make.bat | 36 + .../launch/launch/doc/source/architecture.rst | 215 +++++ src/lib/launch/launch/doc/source/conf.py | 207 +++++ src/lib/launch/launch/doc/source/index.rst | 22 + src/lib/launch/launch/examples/counter.py | 79 ++ .../examples/disable_emulate_tty_counters.py | 58 ++ .../examples/launch_counters.example.txt | 84 ++ .../launch/launch/examples/launch_counters.py | 141 ++++ src/lib/launch/launch/launch/__init__.py | 65 ++ src/lib/launch/launch/launch/action.py | 129 +++ .../launch/launch/launch/actions/__init__.py | 67 ++ .../actions/append_environment_variable.py | 121 +++ .../launch/launch/launch/actions/conftest.py | 34 + .../launch/actions/declare_launch_argument.py | 223 ++++++ .../launch/launch/actions/emit_event.py | 40 + .../launch/launch/actions/execute_local.py | 757 ++++++++++++++++++ .../launch/launch/actions/execute_process.py | 450 +++++++++++ .../launch/launch/actions/group_action.py | 146 ++++ .../actions/include_launch_description.py | 243 ++++++ .../launch/launch/launch/actions/log_info.py | 63 ++ .../launch/launch/actions/opaque_coroutine.py | 117 +++ .../launch/launch/actions/opaque_function.py | 75 ++ .../launch/launch/actions/pop_environment.py | 35 + .../actions/pop_launch_configurations.py | 35 + .../launch/launch/actions/push_environment.py | 35 + .../actions/push_launch_configurations.py | 35 + .../launch/actions/register_event_handler.py | 65 ++ .../launch/actions/reset_environment.py | 46 ++ .../actions/reset_launch_configurations.py | 109 +++ .../actions/set_environment_variable.py | 71 ++ .../actions/set_launch_configuration.py | 74 ++ .../launch/launch/actions/shutdown_action.py | 59 ++ .../launch/launch/actions/timer_action.py | 229 ++++++ .../actions/unregister_event_handler.py | 41 + .../actions/unset_environment_variable.py | 64 ++ .../actions/unset_launch_configuration.py | 55 ++ src/lib/launch/launch/launch/condition.py | 45 ++ .../launch/launch/conditions/__init__.py | 31 + .../evaluate_condition_expression_impl.py | 48 ++ .../launch/launch/conditions/if_condition.py | 47 ++ .../invalid_condition_expression_error.py | 37 + .../conditions/launch_configuration_equals.py | 85 ++ .../launch_configuration_not_equals.py | 56 ++ .../launch/conditions/unless_condition.py | 40 + .../launch/launch/descriptions/__init__.py | 24 + .../launch/launch/descriptions/executable.py | 205 +++++ src/lib/launch/launch/launch/event.py | 21 + src/lib/launch/launch/launch/event_handler.py | 142 ++++ .../launch/launch/event_handlers/__init__.py | 33 + .../launch/event_handlers/event_named.py | 25 + .../event_handlers/on_action_event_base.py | 139 ++++ .../event_handlers/on_execution_complete.py | 63 ++ .../on_include_launch_description.py | 46 ++ .../launch/event_handlers/on_process_exit.py | 69 ++ .../launch/event_handlers/on_process_io.py | 68 ++ .../launch/event_handlers/on_process_start.py | 66 ++ .../launch/event_handlers/on_shutdown.py | 78 ++ .../launch/launch/launch/events/__init__.py | 31 + .../launch/events/execution_complete.py | 33 + .../events/include_launch_description.py | 33 + .../launch/launch/launch/events/matchers.py | 24 + .../launch/launch/events/process/__init__.py | 45 ++ .../launch/events/process/process_exited.py | 45 ++ .../launch/events/process/process_io.py | 59 ++ .../launch/events/process/process_matchers.py | 61 ++ .../launch/events/process/process_started.py | 32 + .../launch/events/process/process_stderr.py | 34 + .../launch/events/process/process_stdin.py | 34 + .../launch/events/process/process_stdout.py | 34 + .../events/process/process_targeted_event.py | 51 ++ .../events/process/running_process_event.py | 94 +++ .../launch/events/process/shutdown_process.py | 41 + .../launch/events/process/signal_process.py | 70 ++ .../launch/launch/launch/events/shutdown.py | 40 + .../launch/launch/events/timer_event.py | 37 + .../launch/launch/launch/frontend/__init__.py | 30 + .../launch/launch/launch/frontend/entity.py | 118 +++ .../launch/launch/launch/frontend/expose.py | 132 +++ .../launch/frontend/parse_substitution.py | 150 ++++ .../launch/launch/launch/frontend/parser.py | 268 +++++++ .../launch/launch/frontend/type_utils.py | 47 ++ .../launch/invalid_launch_file_error.py | 41 + .../launch/launch/launch/launch_context.py | 241 ++++++ .../launch/launch/launch_description.py | 190 +++++ .../launch/launch_description_entity.py | 154 ++++ .../launch/launch_description_source.py | 112 +++ .../launch_description_sources/__init__.py | 39 + .../any_launch_description_source.py | 53 ++ .../any_launch_file_utilities.py | 61 ++ .../frontend_launch_description_source.py | 59 ++ .../frontend_launch_file_utilities.py | 35 + .../python_launch_description_source.py | 51 ++ .../python_launch_file_utilities.py | 72 ++ .../launch/launch/launch_introspector.py | 140 ++++ .../launch/launch/launch/launch_service.py | 449 +++++++++++ .../launch/launch/launch/logging/__init__.py | 542 +++++++++++++ .../launch/launch/launch/logging/handlers.py | 79 ++ .../launch/launch/some_entities_type.py | 31 + .../launch/launch/some_substitutions_type.py | 37 + src/lib/launch/launch/launch/substitution.py | 46 ++ .../launch/launch/substitutions/__init__.py | 65 ++ .../launch/launch/substitutions/anon_name.py | 78 ++ .../substitutions/boolean_substitution.py | 263 ++++++ .../launch/launch/substitutions/command.py | 131 +++ .../substitutions/environment_variable.py | 103 +++ .../substitutions/equals_substitution.py | 130 +++ .../launch/substitutions/file_content.py | 69 ++ .../launch/substitutions/find_executable.py | 67 ++ .../substitutions/if_else_substitution.py | 117 +++ .../substitutions/launch_configuration.py | 102 +++ .../launch/substitutions/launch_log_dir.py | 49 ++ .../substitutions/local_substitution.py | 54 ++ .../substitutions/not_equals_substitution.py | 50 ++ .../substitutions/path_join_substitution.py | 124 +++ .../launch/substitutions/python_expression.py | 120 +++ .../substitutions/substitution_failure.py | 23 + .../launch/substitutions/text_substitution.py | 48 ++ .../launch/substitutions/this_launch_file.py | 59 ++ .../substitutions/this_launch_file_dir.py | 59 ++ .../launch/launch/utilities/__init__.py | 35 + .../launch/utilities/class_tools_impl.py | 41 + .../utilities/ensure_argument_type_impl.py | 79 ++ .../normalize_to_list_of_entities_impl.py | 33 + ...normalize_to_list_of_substitutions_impl.py | 45 ++ .../utilities/perform_substitutions_impl.py | 26 + .../launch/utilities/signal_management.py | 245 ++++++ .../launch/launch/utilities/type_utils.py | 586 ++++++++++++++ .../launch/utilities/typing_file_path.py | 20 + ...t_all_entities_and_collect_futures_impl.py | 46 ++ src/lib/launch/launch/package.xml | 39 + src/lib/launch/launch/pytest.ini | 5 + src/lib/launch/launch/resource/launch | 0 src/lib/launch/launch/setup.cfg | 2 + src/lib/launch/launch/setup.py | 37 + .../launch/share/launch/frontend/grammar.lark | 61 ++ .../test_append_environment_variable.py | 81 ++ .../actions/test_declare_launch_argument.py | 85 ++ .../test/launch/actions/test_emulate_tty.py | 78 ++ .../test/launch/actions/test_group_action.py | 235 ++++++ .../test_include_launch_description.py | 232 ++++++ .../test/launch/actions/test_log_info.py | 47 ++ .../actions/test_push_and_pop_environment.py | 92 +++ ...test_push_and_pop_launch_configurations.py | 75 ++ .../test_register_unregister_event_handler.py | 80 ++ .../test_reset_launch_configurations.py | 100 +++ ...test_set_and_unset_environment_variable.py | 67 ++ ...test_set_and_unset_launch_configuration.py | 55 ++ .../launch/actions/test_shutdown_action.py | 57 ++ .../test_evaluate_condition_expression.py | 50 ++ .../launch/conditions/test_if_condition.py | 50 ++ .../test_launch_configuration_equals.py | 56 ++ .../test_launch_configuration_not_equals.py | 56 ++ .../conditions/test_unless_condition.py | 50 ++ src/lib/launch/launch/test/launch/env_echo.py | 28 + .../test_on_execution_complete.py | 60 ++ .../launch/frontend/test_expose_decorators.py | 50 ++ .../test/launch/frontend/test_parser.py | 65 ++ .../launch/frontend/test_substitutions.py | 369 +++++++++ .../loadable_python_module.py | 19 + .../simple.launch.py | 19 + .../test_python_launch_description_source.py | 43 + .../test_python_launch_file_utilities.py | 47 ++ .../launch_file_with_argument.launch.py | 28 + .../launch/substitutions/test_anon_name.py | 38 + .../test_boolean_substitution.py | 152 ++++ .../test/launch/substitutions/test_command.py | 101 +++ .../test_command/command_with_stderr.bash | 3 + .../test_command/command_with_stderr.bat | 1 + .../test_command/failing_command.bash | 3 + .../test_command/failing_command.bat | 1 + .../test_command/normal_command.bash | 3 + .../test_command/normal_command.bat | 1 + .../test_environment_variable.py | 45 ++ .../substitutions/test_equals_substitution.py | 107 +++ .../launch/substitutions/test_file_content.py | 52 ++ .../substitutions/test_file_content/foo.txt | 1 + .../test_if_else_substitution.py | 72 ++ .../substitutions/test_launch_log_dir.py | 49 ++ .../test_not_equals_substitution.py | 107 +++ .../test_path_join_substitution.py | 42 + .../substitutions/test_python_expression.py | 116 +++ .../substitutions/test_this_launch_file.py | 37 + .../test_this_launch_file_dir.py | 46 ++ .../launch/launch/test/launch/test_action.py | 63 ++ .../launch/test/launch/test_condition.py | 39 + .../launch/launch/test/launch/test_event.py | 23 + .../launch/test/launch/test_event_handler.py | 72 ++ .../launch/test/launch/test_executable.py | 75 ++ .../launch/test/launch/test_execute_local.py | 180 +++++ .../test/launch/test_execute_process.py | 320 ++++++++ .../launch/test_invalid_launch_file_error.py | 33 + .../launch/test/launch/test_launch_context.py | 165 ++++ .../test/launch/test_launch_description.py | 118 +++ .../launch/test_launch_description_entity.py | 38 + .../launch/test_launch_description_source.py | 55 ++ .../launch/test/launch/test_launch_service.py | 104 +++ .../launch/launch/test/launch/test_logging.py | 357 +++++++++ .../test_on_include_launch_description.py | 56 ++ .../test/launch/test_on_process_exit.py | 114 +++ .../launch/test/launch/test_on_process_io.py | 142 ++++ .../test/launch/test_on_process_start.py | 116 +++ .../launch/test/launch/test_on_shutdown.py | 68 ++ .../launch/test/launch/test_timer_action.py | 186 +++++ .../test/launch/utilities/test_class_tools.py | 154 ++++ .../utilities/test_ensure_argument_type.py | 68 ++ ...test_normalize_to_list_of_substitutions.py | 64 ++ .../utilities/test_perform_substitutions.py | 63 ++ .../utilities/test_signal_management.py | 115 +++ .../test/launch/utilities/test_type_utils.py | 603 ++++++++++++++ ..._visit_all_entities_and_collect_futures.py | 114 +++ .../launch/test/temporary_environment.py | 48 ++ src/lib/launch/launch/test/test_copyright.py | 23 + src/lib/launch/launch/test/test_flake8.py | 25 + src/lib/launch/launch/test/test_mypy.py | 23 + src/lib/launch/launch/test/test_pep257.py | 23 + src/lib/launch/launch_pytest/CHANGELOG.rst | 216 +++++ src/lib/launch/launch_pytest/README.md | 153 ++++ .../launch_pytest/launch_pytest/__init__.py | 23 + .../launch_pytest/actions/__init__.py | 19 + .../launch_pytest/launch_pytest/fixture.py | 147 ++++ .../launch_pytest/launch_pytest/plugin.py | 526 ++++++++++++ .../launch_pytest/tools/__init__.py | 43 + .../launch_pytest/tools/process.py | 256 ++++++ src/lib/launch/launch_pytest/package.xml | 32 + src/lib/launch/launch_pytest/pytest.ini | 2 + .../launch_pytest/resource/launch_pytest | 0 src/lib/launch/launch_pytest/setup.cfg | 4 + src/lib/launch/launch_pytest/setup.py | 50 ++ src/lib/launch/launch_pytest/test/conftest.py | 15 + .../launch_pytest/examples/check_node_msgs.py | 79 ++ .../examples/executables/talker.py | 51 ++ .../launch_pytest/examples/function_scope.py | 78 ++ .../launch_pytest/examples/module_scope.py | 96 +++ .../examples/pytest_hello_world.py | 62 ++ .../test/launch_pytest/test_plugin.py | 332 ++++++++ .../test/launch_pytest/tools/test_process.py | 78 ++ .../launch_pytest/test/test_copyright.py | 23 + .../launch/launch_pytest/test/test_flake8.py | 25 + .../launch/launch_pytest/test/test_pep257.py | 23 + src/lib/launch/launch_testing/CHANGELOG.rst | 328 ++++++++ src/lib/launch/launch_testing/README.md | 264 ++++++ .../example_processes/exit_code_proc.py | 31 + .../example_processes/good_proc.py | 41 + .../example_processes/terminating_proc.py | 44 + .../launch_testing/launch_testing/__init__.py | 39 + .../launch_testing/actions/__init__.py | 25 + .../launch_testing/actions/gtest.py | 46 ++ .../launch_testing/actions/pytest.py | 49 ++ .../launch_testing/actions/ready.py | 42 + .../launch_testing/actions/test.py | 88 ++ .../launch_testing/asserts/__init__.py | 47 ++ .../asserts/assert_exit_codes.py | 65 ++ .../launch_testing/asserts/assert_output.py | 150 ++++ .../asserts/assert_sequential_output.py | 141 ++++ .../launch_testing/decorator.py | 24 + .../launch_testing/event_handlers/__init__.py | 20 + .../event_handlers/stdout_ready_listener.py | 59 ++ .../launch_testing/io_handler.py | 206 +++++ .../launch_testing/launch_testing/junitxml.py | 112 +++ .../launch_testing/launch_test.py | 146 ++++ .../launch_testing/legacy/__init__.py | 268 +++++++ .../launch_testing/legacy/output.py | 136 ++++ .../launch_testing/launch_testing/loader.py | 308 +++++++ .../launch_testing/launch_testing/markers.py | 63 ++ .../launch_testing/parametrize.py | 55 ++ .../launch_testing/parse_arguments.py | 33 + .../launch_testing/print_arguments.py | 39 + .../launch_testing/proc_info_handler.py | 168 ++++ .../launch_testing/pytest/__init__.py | 0 .../launch_testing/pytest/hooks.py | 250 ++++++ .../launch_testing/pytest/hookspecs.py | 21 + .../launch_testing/ready_aggregator.py | 46 ++ .../ready_to_test_action_timeout.py | 30 + .../launch_testing/test_result.py | 104 +++ .../launch_testing/test_runner.py | 311 +++++++ .../launch_testing/tools/__init__.py | 28 + .../launch_testing/tools/output.py | 134 ++++ .../launch_testing/tools/process.py | 184 +++++ .../launch_testing/tools/text.py | 138 ++++ .../launch_testing/util/__init__.py | 58 ++ .../launch_testing/util/proc_lookup.py | 158 ++++ src/lib/launch/launch_testing/package.xml | 38 + src/lib/launch/launch_testing/pytest.ini | 6 + .../launch_testing/resource/launch_testing | 0 src/lib/launch/launch_testing/setup.cfg | 4 + src/lib/launch/launch_testing/setup.py | 41 + .../launch/launch_testing/test/conftest.py | 95 +++ .../examples/args_launch_test.py | 98 +++ .../examples/context_launch_test.py | 104 +++ .../examples/good_proc_launch_test.py | 95 +++ .../examples/hello_world_launch_test.py | 58 ++ .../examples/parameters_launch_test.py | 63 ++ .../examples/ready_action_test.py | 95 +++ .../ready_to_test_action_timeout_test.py | 47 ++ .../examples/terminating_proc_launch_test.py | 117 +++ .../test/launch_testing/legacy/check_env.py | 20 + .../test/launch_testing/legacy/matching.py | 27 + .../launch_testing/legacy/test_env_passing.py | 52 ++ .../launch_testing/legacy/test_matching.py | 57 ++ .../launch_testing/test_assert_exit_codes.py | 75 ++ .../test/launch_testing/test_copyright.py | 20 + .../test/launch_testing/test_flake8.py | 22 + .../test_io_handler_and_assertions.py | 188 +++++ .../test_launch_test_runner_validation.py | 189 +++++ .../test_parametrize_decorator.py | 80 ++ .../test_parametrized_description_import.py | 67 ++ .../test/launch_testing/test_pep257.py | 20 + .../launch_testing/test_print_arguments.py | 66 ++ .../test_proc_info_assertions.py | 129 +++ .../launch_testing/test_ready_aggregator.py | 55 ++ .../test_ready_to_test_action_decorator.py | 49 ++ .../launch_testing/test_resolve_process.py | 237 ++++++ .../launch_testing/test_runner_results.py | 223 ++++++ .../test_sequential_output_checker.py | 243 ++++++ .../test_stdout_ready_listener.py | 133 +++ .../test/launch_testing/test_tools.py | 207 +++++ ...ools_expected_output_from_regex_file.regex | 1 + ...st_tools_expected_output_from_txt_file.txt | 1 + .../test/launch_testing/test_xml_output.py | 369 +++++++++ .../launch_testing_ament_cmake/CHANGELOG.rst | 232 ++++++ .../launch_testing_ament_cmake/CMakeLists.txt | 36 + .../cmake/add_launch_test.cmake | 159 ++++ .../launch_testing_ament_cmake-extras.cmake | 20 + .../launch_testing_ament_cmake/package.xml | 34 + src/lib/launch/launch_xml/CHANGELOG.rst | 233 ++++++ src/lib/launch/launch_xml/README.md | 99 +++ .../launch/launch_xml/launch_xml/__init__.py | 25 + .../launch/launch_xml/launch_xml/entity.py | 131 +++ .../launch_description_sources/__init__.py | 21 + .../xml_launch_description_source.py | 44 + .../launch/launch_xml/launch_xml/parser.py | 42 + src/lib/launch/launch_xml/package.xml | 30 + src/lib/launch/launch_xml/pytest.ini | 2 + src/lib/launch/launch_xml/resource/launch_xml | 0 src/lib/launch/launch_xml/setup.py | 41 + .../launch_xml/test/launch_xml/executable.xml | 5 + .../test/launch_xml/test_append_env.py | 70 ++ .../launch_xml/test/launch_xml/test_arg.py | 90 +++ .../launch_xml/test_boolean_substitution.py | 115 +++ .../launch_xml/test_deprecated_launch_file.py | 33 + .../test/launch_xml/test_executable.py | 88 ++ .../launch_xml/test/launch_xml/test_group.py | 89 ++ .../test/launch_xml/test_include.py | 57 ++ .../test/launch_xml/test_let_var.py | 45 ++ .../launch_xml/test/launch_xml/test_list.py | 43 + .../launch_xml/test/launch_xml/test_log.py | 39 + .../launch_xml/test/launch_xml/test_reset.py | 63 ++ .../test/launch_xml/test_set_env.py | 38 + .../launch_xml/test/launch_xml/test_timer.py | 62 ++ .../test/launch_xml/test_unset_env.py | 37 + .../launch/launch_xml/test/test_copyright.py | 23 + src/lib/launch/launch_xml/test/test_flake8.py | 25 + src/lib/launch/launch_xml/test/test_pep257.py | 23 + src/lib/launch/launch_yaml/CHANGELOG.rst | 224 ++++++ src/lib/launch/launch_yaml/README.md | 126 +++ .../launch_yaml/launch_yaml/__init__.py | 25 + .../launch/launch_yaml/launch_yaml/entity.py | 139 ++++ .../launch_description_sources/__init__.py | 21 + .../yaml_launch_description_source.py | 45 ++ .../launch/launch_yaml/launch_yaml/parser.py | 60 ++ src/lib/launch/launch_yaml/package.xml | 30 + src/lib/launch/launch_yaml/pytest.ini | 2 + .../launch/launch_yaml/resource/launch_yaml | 0 src/lib/launch/launch_yaml/setup.py | 41 + .../test/launch_yaml/executable.yaml | 14 + .../test/launch_yaml/test_append_env.py | 86 ++ .../launch_yaml/test_boolean_substitution.py | 114 +++ .../test/launch_yaml/test_executable.py | 85 ++ .../test/launch_yaml/test_group.py | 101 +++ .../test/launch_yaml/test_include.py | 64 ++ .../launch_yaml/test/launch_yaml/test_log.py | 39 + .../test/launch_yaml/test_reset.py | 71 ++ .../launch/launch_yaml/test/test_copyright.py | 23 + .../launch/launch_yaml/test/test_flake8.py | 25 + .../launch/launch_yaml/test/test_pep257.py | 23 + .../launch/test_launch_testing/CHANGELOG.rst | 216 +++++ .../launch/test_launch_testing/CMakeLists.txt | 45 ++ .../launch/test_launch_testing/package.xml | 33 + src/lib/launch/test_launch_testing/pytest.ini | 2 + .../test/dummy_tests/dummy.cpp | 26 + .../test/dummy_tests/dummy.py | 19 + .../test/dummy_tests/locking.cpp | 19 + .../test/dummy_tests/locking.py | 19 + .../test_launch_testing/actions/test_gtest.py | 42 + .../actions/test_pytest.py | 42 + 394 files changed, 34622 insertions(+) create mode 100644 src/lib/launch/.github/ISSUE_TEMPLATE.md create mode 100644 src/lib/launch/.gitignore create mode 100644 src/lib/launch/.gitrepo create mode 100644 src/lib/launch/CONTRIBUTING.md create mode 100644 src/lib/launch/LICENSE create mode 100644 src/lib/launch/launch/CHANGELOG.rst create mode 100644 src/lib/launch/launch/conftest.py create mode 100644 src/lib/launch/launch/doc/.gitignore create mode 100644 src/lib/launch/launch/doc/Makefile create mode 100644 src/lib/launch/launch/doc/make.bat create mode 100644 src/lib/launch/launch/doc/source/architecture.rst create mode 100644 src/lib/launch/launch/doc/source/conf.py create mode 100644 src/lib/launch/launch/doc/source/index.rst create mode 100755 src/lib/launch/launch/examples/counter.py create mode 100755 src/lib/launch/launch/examples/disable_emulate_tty_counters.py create mode 100644 src/lib/launch/launch/examples/launch_counters.example.txt create mode 100755 src/lib/launch/launch/examples/launch_counters.py create mode 100644 src/lib/launch/launch/launch/__init__.py create mode 100644 src/lib/launch/launch/launch/action.py create mode 100644 src/lib/launch/launch/launch/actions/__init__.py create mode 100644 src/lib/launch/launch/launch/actions/append_environment_variable.py create mode 100644 src/lib/launch/launch/launch/actions/conftest.py create mode 100644 src/lib/launch/launch/launch/actions/declare_launch_argument.py create mode 100644 src/lib/launch/launch/launch/actions/emit_event.py create mode 100644 src/lib/launch/launch/launch/actions/execute_local.py create mode 100644 src/lib/launch/launch/launch/actions/execute_process.py create mode 100644 src/lib/launch/launch/launch/actions/group_action.py create mode 100644 src/lib/launch/launch/launch/actions/include_launch_description.py create mode 100644 src/lib/launch/launch/launch/actions/log_info.py create mode 100644 src/lib/launch/launch/launch/actions/opaque_coroutine.py create mode 100644 src/lib/launch/launch/launch/actions/opaque_function.py create mode 100644 src/lib/launch/launch/launch/actions/pop_environment.py create mode 100644 src/lib/launch/launch/launch/actions/pop_launch_configurations.py create mode 100644 src/lib/launch/launch/launch/actions/push_environment.py create mode 100644 src/lib/launch/launch/launch/actions/push_launch_configurations.py create mode 100644 src/lib/launch/launch/launch/actions/register_event_handler.py create mode 100644 src/lib/launch/launch/launch/actions/reset_environment.py create mode 100644 src/lib/launch/launch/launch/actions/reset_launch_configurations.py create mode 100644 src/lib/launch/launch/launch/actions/set_environment_variable.py create mode 100644 src/lib/launch/launch/launch/actions/set_launch_configuration.py create mode 100644 src/lib/launch/launch/launch/actions/shutdown_action.py create mode 100644 src/lib/launch/launch/launch/actions/timer_action.py create mode 100644 src/lib/launch/launch/launch/actions/unregister_event_handler.py create mode 100644 src/lib/launch/launch/launch/actions/unset_environment_variable.py create mode 100644 src/lib/launch/launch/launch/actions/unset_launch_configuration.py create mode 100644 src/lib/launch/launch/launch/condition.py create mode 100644 src/lib/launch/launch/launch/conditions/__init__.py create mode 100644 src/lib/launch/launch/launch/conditions/evaluate_condition_expression_impl.py create mode 100644 src/lib/launch/launch/launch/conditions/if_condition.py create mode 100644 src/lib/launch/launch/launch/conditions/invalid_condition_expression_error.py create mode 100644 src/lib/launch/launch/launch/conditions/launch_configuration_equals.py create mode 100644 src/lib/launch/launch/launch/conditions/launch_configuration_not_equals.py create mode 100644 src/lib/launch/launch/launch/conditions/unless_condition.py create mode 100644 src/lib/launch/launch/launch/descriptions/__init__.py create mode 100644 src/lib/launch/launch/launch/descriptions/executable.py create mode 100644 src/lib/launch/launch/launch/event.py create mode 100644 src/lib/launch/launch/launch/event_handler.py create mode 100644 src/lib/launch/launch/launch/event_handlers/__init__.py create mode 100644 src/lib/launch/launch/launch/event_handlers/event_named.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_action_event_base.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_execution_complete.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_include_launch_description.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_process_exit.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_process_io.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_process_start.py create mode 100644 src/lib/launch/launch/launch/event_handlers/on_shutdown.py create mode 100644 src/lib/launch/launch/launch/events/__init__.py create mode 100644 src/lib/launch/launch/launch/events/execution_complete.py create mode 100644 src/lib/launch/launch/launch/events/include_launch_description.py create mode 100644 src/lib/launch/launch/launch/events/matchers.py create mode 100644 src/lib/launch/launch/launch/events/process/__init__.py create mode 100644 src/lib/launch/launch/launch/events/process/process_exited.py create mode 100644 src/lib/launch/launch/launch/events/process/process_io.py create mode 100644 src/lib/launch/launch/launch/events/process/process_matchers.py create mode 100644 src/lib/launch/launch/launch/events/process/process_started.py create mode 100644 src/lib/launch/launch/launch/events/process/process_stderr.py create mode 100644 src/lib/launch/launch/launch/events/process/process_stdin.py create mode 100644 src/lib/launch/launch/launch/events/process/process_stdout.py create mode 100644 src/lib/launch/launch/launch/events/process/process_targeted_event.py create mode 100644 src/lib/launch/launch/launch/events/process/running_process_event.py create mode 100644 src/lib/launch/launch/launch/events/process/shutdown_process.py create mode 100644 src/lib/launch/launch/launch/events/process/signal_process.py create mode 100644 src/lib/launch/launch/launch/events/shutdown.py create mode 100644 src/lib/launch/launch/launch/events/timer_event.py create mode 100644 src/lib/launch/launch/launch/frontend/__init__.py create mode 100644 src/lib/launch/launch/launch/frontend/entity.py create mode 100644 src/lib/launch/launch/launch/frontend/expose.py create mode 100644 src/lib/launch/launch/launch/frontend/parse_substitution.py create mode 100644 src/lib/launch/launch/launch/frontend/parser.py create mode 100644 src/lib/launch/launch/launch/frontend/type_utils.py create mode 100644 src/lib/launch/launch/launch/invalid_launch_file_error.py create mode 100644 src/lib/launch/launch/launch/launch_context.py create mode 100644 src/lib/launch/launch/launch/launch_description.py create mode 100644 src/lib/launch/launch/launch/launch_description_entity.py create mode 100644 src/lib/launch/launch/launch/launch_description_source.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/__init__.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/any_launch_description_source.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/any_launch_file_utilities.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/frontend_launch_description_source.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/frontend_launch_file_utilities.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/python_launch_description_source.py create mode 100644 src/lib/launch/launch/launch/launch_description_sources/python_launch_file_utilities.py create mode 100644 src/lib/launch/launch/launch/launch_introspector.py create mode 100644 src/lib/launch/launch/launch/launch_service.py create mode 100644 src/lib/launch/launch/launch/logging/__init__.py create mode 100644 src/lib/launch/launch/launch/logging/handlers.py create mode 100644 src/lib/launch/launch/launch/some_entities_type.py create mode 100644 src/lib/launch/launch/launch/some_substitutions_type.py create mode 100644 src/lib/launch/launch/launch/substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/__init__.py create mode 100644 src/lib/launch/launch/launch/substitutions/anon_name.py create mode 100644 src/lib/launch/launch/launch/substitutions/boolean_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/command.py create mode 100644 src/lib/launch/launch/launch/substitutions/environment_variable.py create mode 100644 src/lib/launch/launch/launch/substitutions/equals_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/file_content.py create mode 100644 src/lib/launch/launch/launch/substitutions/find_executable.py create mode 100644 src/lib/launch/launch/launch/substitutions/if_else_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/launch_configuration.py create mode 100644 src/lib/launch/launch/launch/substitutions/launch_log_dir.py create mode 100644 src/lib/launch/launch/launch/substitutions/local_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/not_equals_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/path_join_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/python_expression.py create mode 100644 src/lib/launch/launch/launch/substitutions/substitution_failure.py create mode 100644 src/lib/launch/launch/launch/substitutions/text_substitution.py create mode 100644 src/lib/launch/launch/launch/substitutions/this_launch_file.py create mode 100644 src/lib/launch/launch/launch/substitutions/this_launch_file_dir.py create mode 100644 src/lib/launch/launch/launch/utilities/__init__.py create mode 100644 src/lib/launch/launch/launch/utilities/class_tools_impl.py create mode 100644 src/lib/launch/launch/launch/utilities/ensure_argument_type_impl.py create mode 100644 src/lib/launch/launch/launch/utilities/normalize_to_list_of_entities_impl.py create mode 100644 src/lib/launch/launch/launch/utilities/normalize_to_list_of_substitutions_impl.py create mode 100644 src/lib/launch/launch/launch/utilities/perform_substitutions_impl.py create mode 100644 src/lib/launch/launch/launch/utilities/signal_management.py create mode 100644 src/lib/launch/launch/launch/utilities/type_utils.py create mode 100644 src/lib/launch/launch/launch/utilities/typing_file_path.py create mode 100644 src/lib/launch/launch/launch/utilities/visit_all_entities_and_collect_futures_impl.py create mode 100644 src/lib/launch/launch/package.xml create mode 100644 src/lib/launch/launch/pytest.ini create mode 100644 src/lib/launch/launch/resource/launch create mode 100644 src/lib/launch/launch/setup.cfg create mode 100644 src/lib/launch/launch/setup.py create mode 100644 src/lib/launch/launch/share/launch/frontend/grammar.lark create mode 100644 src/lib/launch/launch/test/launch/actions/test_append_environment_variable.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_declare_launch_argument.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_emulate_tty.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_group_action.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_include_launch_description.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_log_info.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_push_and_pop_environment.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_push_and_pop_launch_configurations.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_register_unregister_event_handler.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_reset_launch_configurations.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_set_and_unset_environment_variable.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_set_and_unset_launch_configuration.py create mode 100644 src/lib/launch/launch/test/launch/actions/test_shutdown_action.py create mode 100644 src/lib/launch/launch/test/launch/conditions/test_evaluate_condition_expression.py create mode 100644 src/lib/launch/launch/test/launch/conditions/test_if_condition.py create mode 100644 src/lib/launch/launch/test/launch/conditions/test_launch_configuration_equals.py create mode 100644 src/lib/launch/launch/test/launch/conditions/test_launch_configuration_not_equals.py create mode 100644 src/lib/launch/launch/test/launch/conditions/test_unless_condition.py create mode 100644 src/lib/launch/launch/test/launch/env_echo.py create mode 100644 src/lib/launch/launch/test/launch/event_handlers/test_on_execution_complete.py create mode 100644 src/lib/launch/launch/test/launch/frontend/test_expose_decorators.py create mode 100644 src/lib/launch/launch/test/launch/frontend/test_parser.py create mode 100644 src/lib/launch/launch/test/launch/frontend/test_substitutions.py create mode 100644 src/lib/launch/launch/test/launch/launch_description_source/loadable_python_module.py create mode 100644 src/lib/launch/launch/test/launch/launch_description_source/simple.launch.py create mode 100644 src/lib/launch/launch/test/launch/launch_description_source/test_python_launch_description_source.py create mode 100644 src/lib/launch/launch/test/launch/launch_description_source/test_python_launch_file_utilities.py create mode 100644 src/lib/launch/launch/test/launch/launch_file_with_argument.launch.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_anon_name.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_boolean_substitution.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_command.py create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/command_with_stderr.bash create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/command_with_stderr.bat create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/failing_command.bash create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/failing_command.bat create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/normal_command.bash create mode 100755 src/lib/launch/launch/test/launch/substitutions/test_command/normal_command.bat create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_environment_variable.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_equals_substitution.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_file_content.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_file_content/foo.txt create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_if_else_substitution.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_launch_log_dir.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_not_equals_substitution.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_path_join_substitution.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_python_expression.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_this_launch_file.py create mode 100644 src/lib/launch/launch/test/launch/substitutions/test_this_launch_file_dir.py create mode 100644 src/lib/launch/launch/test/launch/test_action.py create mode 100644 src/lib/launch/launch/test/launch/test_condition.py create mode 100644 src/lib/launch/launch/test/launch/test_event.py create mode 100644 src/lib/launch/launch/test/launch/test_event_handler.py create mode 100644 src/lib/launch/launch/test/launch/test_executable.py create mode 100644 src/lib/launch/launch/test/launch/test_execute_local.py create mode 100644 src/lib/launch/launch/test/launch/test_execute_process.py create mode 100644 src/lib/launch/launch/test/launch/test_invalid_launch_file_error.py create mode 100644 src/lib/launch/launch/test/launch/test_launch_context.py create mode 100644 src/lib/launch/launch/test/launch/test_launch_description.py create mode 100644 src/lib/launch/launch/test/launch/test_launch_description_entity.py create mode 100644 src/lib/launch/launch/test/launch/test_launch_description_source.py create mode 100644 src/lib/launch/launch/test/launch/test_launch_service.py create mode 100644 src/lib/launch/launch/test/launch/test_logging.py create mode 100644 src/lib/launch/launch/test/launch/test_on_include_launch_description.py create mode 100644 src/lib/launch/launch/test/launch/test_on_process_exit.py create mode 100644 src/lib/launch/launch/test/launch/test_on_process_io.py create mode 100644 src/lib/launch/launch/test/launch/test_on_process_start.py create mode 100644 src/lib/launch/launch/test/launch/test_on_shutdown.py create mode 100644 src/lib/launch/launch/test/launch/test_timer_action.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_class_tools.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_ensure_argument_type.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_normalize_to_list_of_substitutions.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_perform_substitutions.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_signal_management.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_type_utils.py create mode 100644 src/lib/launch/launch/test/launch/utilities/test_visit_all_entities_and_collect_futures.py create mode 100644 src/lib/launch/launch/test/temporary_environment.py create mode 100644 src/lib/launch/launch/test/test_copyright.py create mode 100644 src/lib/launch/launch/test/test_flake8.py create mode 100644 src/lib/launch/launch/test/test_mypy.py create mode 100644 src/lib/launch/launch/test/test_pep257.py create mode 100644 src/lib/launch/launch_pytest/CHANGELOG.rst create mode 100644 src/lib/launch/launch_pytest/README.md create mode 100644 src/lib/launch/launch_pytest/launch_pytest/__init__.py create mode 100644 src/lib/launch/launch_pytest/launch_pytest/actions/__init__.py create mode 100644 src/lib/launch/launch_pytest/launch_pytest/fixture.py create mode 100644 src/lib/launch/launch_pytest/launch_pytest/plugin.py create mode 100644 src/lib/launch/launch_pytest/launch_pytest/tools/__init__.py create mode 100644 src/lib/launch/launch_pytest/launch_pytest/tools/process.py create mode 100644 src/lib/launch/launch_pytest/package.xml create mode 100644 src/lib/launch/launch_pytest/pytest.ini create mode 100644 src/lib/launch/launch_pytest/resource/launch_pytest create mode 100644 src/lib/launch/launch_pytest/setup.cfg create mode 100644 src/lib/launch/launch_pytest/setup.py create mode 100644 src/lib/launch/launch_pytest/test/conftest.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/examples/check_node_msgs.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/examples/executables/talker.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/examples/function_scope.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/examples/module_scope.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/examples/pytest_hello_world.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/test_plugin.py create mode 100644 src/lib/launch/launch_pytest/test/launch_pytest/tools/test_process.py create mode 100644 src/lib/launch/launch_pytest/test/test_copyright.py create mode 100644 src/lib/launch/launch_pytest/test/test_flake8.py create mode 100644 src/lib/launch/launch_pytest/test/test_pep257.py create mode 100644 src/lib/launch/launch_testing/CHANGELOG.rst create mode 100644 src/lib/launch/launch_testing/README.md create mode 100755 src/lib/launch/launch_testing/example_processes/exit_code_proc.py create mode 100755 src/lib/launch/launch_testing/example_processes/good_proc.py create mode 100755 src/lib/launch/launch_testing/example_processes/terminating_proc.py create mode 100644 src/lib/launch/launch_testing/launch_testing/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/actions/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/actions/gtest.py create mode 100644 src/lib/launch/launch_testing/launch_testing/actions/pytest.py create mode 100644 src/lib/launch/launch_testing/launch_testing/actions/ready.py create mode 100644 src/lib/launch/launch_testing/launch_testing/actions/test.py create mode 100644 src/lib/launch/launch_testing/launch_testing/asserts/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/asserts/assert_exit_codes.py create mode 100644 src/lib/launch/launch_testing/launch_testing/asserts/assert_output.py create mode 100644 src/lib/launch/launch_testing/launch_testing/asserts/assert_sequential_output.py create mode 100644 src/lib/launch/launch_testing/launch_testing/decorator.py create mode 100644 src/lib/launch/launch_testing/launch_testing/event_handlers/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/event_handlers/stdout_ready_listener.py create mode 100644 src/lib/launch/launch_testing/launch_testing/io_handler.py create mode 100644 src/lib/launch/launch_testing/launch_testing/junitxml.py create mode 100644 src/lib/launch/launch_testing/launch_testing/launch_test.py create mode 100644 src/lib/launch/launch_testing/launch_testing/legacy/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/legacy/output.py create mode 100644 src/lib/launch/launch_testing/launch_testing/loader.py create mode 100644 src/lib/launch/launch_testing/launch_testing/markers.py create mode 100644 src/lib/launch/launch_testing/launch_testing/parametrize.py create mode 100644 src/lib/launch/launch_testing/launch_testing/parse_arguments.py create mode 100644 src/lib/launch/launch_testing/launch_testing/print_arguments.py create mode 100644 src/lib/launch/launch_testing/launch_testing/proc_info_handler.py create mode 100644 src/lib/launch/launch_testing/launch_testing/pytest/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/pytest/hooks.py create mode 100644 src/lib/launch/launch_testing/launch_testing/pytest/hookspecs.py create mode 100644 src/lib/launch/launch_testing/launch_testing/ready_aggregator.py create mode 100644 src/lib/launch/launch_testing/launch_testing/ready_to_test_action_timeout.py create mode 100644 src/lib/launch/launch_testing/launch_testing/test_result.py create mode 100644 src/lib/launch/launch_testing/launch_testing/test_runner.py create mode 100644 src/lib/launch/launch_testing/launch_testing/tools/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/tools/output.py create mode 100644 src/lib/launch/launch_testing/launch_testing/tools/process.py create mode 100644 src/lib/launch/launch_testing/launch_testing/tools/text.py create mode 100644 src/lib/launch/launch_testing/launch_testing/util/__init__.py create mode 100644 src/lib/launch/launch_testing/launch_testing/util/proc_lookup.py create mode 100644 src/lib/launch/launch_testing/package.xml create mode 100644 src/lib/launch/launch_testing/pytest.ini create mode 100644 src/lib/launch/launch_testing/resource/launch_testing create mode 100644 src/lib/launch/launch_testing/setup.cfg create mode 100644 src/lib/launch/launch_testing/setup.py create mode 100644 src/lib/launch/launch_testing/test/conftest.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/args_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/context_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/good_proc_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/hello_world_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/parameters_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/ready_action_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/ready_to_test_action_timeout_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/examples/terminating_proc_launch_test.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/legacy/check_env.py create mode 100755 src/lib/launch/launch_testing/test/launch_testing/legacy/matching.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/legacy/test_env_passing.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/legacy/test_matching.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_assert_exit_codes.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_copyright.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_flake8.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_io_handler_and_assertions.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_launch_test_runner_validation.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_parametrize_decorator.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_parametrized_description_import.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_pep257.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_print_arguments.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_proc_info_assertions.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_ready_aggregator.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_ready_to_test_action_decorator.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_resolve_process.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_runner_results.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_sequential_output_checker.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_stdout_ready_listener.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_tools.py create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_tools_expected_output_from_regex_file.regex create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_tools_expected_output_from_txt_file.txt create mode 100644 src/lib/launch/launch_testing/test/launch_testing/test_xml_output.py create mode 100644 src/lib/launch/launch_testing_ament_cmake/CHANGELOG.rst create mode 100644 src/lib/launch/launch_testing_ament_cmake/CMakeLists.txt create mode 100644 src/lib/launch/launch_testing_ament_cmake/cmake/add_launch_test.cmake create mode 100644 src/lib/launch/launch_testing_ament_cmake/launch_testing_ament_cmake-extras.cmake create mode 100644 src/lib/launch/launch_testing_ament_cmake/package.xml create mode 100644 src/lib/launch/launch_xml/CHANGELOG.rst create mode 100644 src/lib/launch/launch_xml/README.md create mode 100644 src/lib/launch/launch_xml/launch_xml/__init__.py create mode 100644 src/lib/launch/launch_xml/launch_xml/entity.py create mode 100644 src/lib/launch/launch_xml/launch_xml/launch_description_sources/__init__.py create mode 100644 src/lib/launch/launch_xml/launch_xml/launch_description_sources/xml_launch_description_source.py create mode 100644 src/lib/launch/launch_xml/launch_xml/parser.py create mode 100644 src/lib/launch/launch_xml/package.xml create mode 100644 src/lib/launch/launch_xml/pytest.ini create mode 100644 src/lib/launch/launch_xml/resource/launch_xml create mode 100644 src/lib/launch/launch_xml/setup.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/executable.xml create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_append_env.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_arg.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_boolean_substitution.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_deprecated_launch_file.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_executable.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_group.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_include.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_let_var.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_list.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_log.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_reset.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_set_env.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_timer.py create mode 100644 src/lib/launch/launch_xml/test/launch_xml/test_unset_env.py create mode 100644 src/lib/launch/launch_xml/test/test_copyright.py create mode 100644 src/lib/launch/launch_xml/test/test_flake8.py create mode 100644 src/lib/launch/launch_xml/test/test_pep257.py create mode 100644 src/lib/launch/launch_yaml/CHANGELOG.rst create mode 100644 src/lib/launch/launch_yaml/README.md create mode 100644 src/lib/launch/launch_yaml/launch_yaml/__init__.py create mode 100644 src/lib/launch/launch_yaml/launch_yaml/entity.py create mode 100644 src/lib/launch/launch_yaml/launch_yaml/launch_description_sources/__init__.py create mode 100644 src/lib/launch/launch_yaml/launch_yaml/launch_description_sources/yaml_launch_description_source.py create mode 100644 src/lib/launch/launch_yaml/launch_yaml/parser.py create mode 100644 src/lib/launch/launch_yaml/package.xml create mode 100644 src/lib/launch/launch_yaml/pytest.ini create mode 100644 src/lib/launch/launch_yaml/resource/launch_yaml create mode 100644 src/lib/launch/launch_yaml/setup.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/executable.yaml create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_append_env.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_boolean_substitution.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_executable.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_group.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_include.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_log.py create mode 100644 src/lib/launch/launch_yaml/test/launch_yaml/test_reset.py create mode 100644 src/lib/launch/launch_yaml/test/test_copyright.py create mode 100644 src/lib/launch/launch_yaml/test/test_flake8.py create mode 100644 src/lib/launch/launch_yaml/test/test_pep257.py create mode 100644 src/lib/launch/test_launch_testing/CHANGELOG.rst create mode 100644 src/lib/launch/test_launch_testing/CMakeLists.txt create mode 100644 src/lib/launch/test_launch_testing/package.xml create mode 100644 src/lib/launch/test_launch_testing/pytest.ini create mode 100644 src/lib/launch/test_launch_testing/test/dummy_tests/dummy.cpp create mode 100644 src/lib/launch/test_launch_testing/test/dummy_tests/dummy.py create mode 100644 src/lib/launch/test_launch_testing/test/dummy_tests/locking.cpp create mode 100644 src/lib/launch/test_launch_testing/test/dummy_tests/locking.py create mode 100644 src/lib/launch/test_launch_testing/test/test_launch_testing/actions/test_gtest.py create mode 100644 src/lib/launch/test_launch_testing/test/test_launch_testing/actions/test_pytest.py diff --git a/src/lib/launch/.github/ISSUE_TEMPLATE.md b/src/lib/launch/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..f705392bb3 --- /dev/null +++ b/src/lib/launch/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,45 @@ + + +## Bug report + +**Required Info:** + +- Operating System: + - +- Installation type: + - +- Version or commit hash: + - +- DDS implementation: + - +- Client library (if applicable): + - + +#### Steps to reproduce issue + +``` + +``` + +#### Expected behavior + +#### Actual behavior + +#### Additional information + + +---- +## Feature request + +#### Feature description + + +#### Implementation considerations + diff --git a/src/lib/launch/.gitignore b/src/lib/launch/.gitignore new file mode 100644 index 0000000000..f70b02df49 --- /dev/null +++ b/src/lib/launch/.gitignore @@ -0,0 +1,6 @@ +__pycache__ +*.pyc +.DS_Store +.mypy_cache +.pytest_cache +.flake8 diff --git a/src/lib/launch/.gitrepo b/src/lib/launch/.gitrepo new file mode 100644 index 0000000000..b7392fead9 --- /dev/null +++ b/src/lib/launch/.gitrepo @@ -0,0 +1,13 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-include command (compatible with git-subrepo). +; See https://github.com/flova/git-include +; +[subrepo] + remote = https://github.com/ros2/launch.git + branch = jazzy + commit = e74fa72f5c64bedd9ce252bf3846e7442b45c791 + parent = 48142d57127678664778584280df6791a43a0592 + method = merge + cmdver = git-include/0.1.3 diff --git a/src/lib/launch/CONTRIBUTING.md b/src/lib/launch/CONTRIBUTING.md new file mode 100644 index 0000000000..cfba094dac --- /dev/null +++ b/src/lib/launch/CONTRIBUTING.md @@ -0,0 +1,18 @@ +Any contribution that you make to this repository will +be under the Apache 2 License, as dictated by that +[license](http://www.apache.org/licenses/LICENSE-2.0.html): + +~~~ +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. +~~~ + +Contributors must sign-off each commit by adding a `Signed-off-by: ...` +line to commit messages to certify that they have the right to submit +the code they are contributing to the project according to the +[Developer Certificate of Origin (DCO)](https://developercertificate.org/). diff --git a/src/lib/launch/LICENSE b/src/lib/launch/LICENSE new file mode 100644 index 0000000000..2b315a13af --- /dev/null +++ b/src/lib/launch/LICENSE @@ -0,0 +1,237 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +---------------------------- + + + + Software License Agreement (BSD License) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Willow Garage, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. diff --git a/src/lib/launch/launch/CHANGELOG.rst b/src/lib/launch/launch/CHANGELOG.rst new file mode 100644 index 0000000000..ec281e0abf --- /dev/null +++ b/src/lib/launch/launch/CHANGELOG.rst @@ -0,0 +1,542 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package launch +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +3.4.11 (2026-06-02) +------------------- +* Correct typos (backport `#961 `_) (`#963 `_) + * Correct typos (`#961 `_) + (cherry picked from commit b51d67a0fb3c572a8255855ac73364ca53ed3691) + Co-authored-by: Auguste Lalande + Co-authored-by: Alejandro Hernandez Cordero +* Contributors: mergify[bot] + +3.4.10 (2026-01-12) +------------------- +* [jazzy] Allow Path in substitutions, instead of requiring cast to str (backport `#873 `_) (`#927 `_) +* Fix intersphinx_mapping format (`#921 `_) (`#923 `_) +* Contributors: mergify[bot] + +3.4.9 (2025-11-07) +------------------ +* [backport jazzy] Make the directory-finding substitutions into a PathSubstitution for / operator (backport `#914 `_) (`#918 `_) +* Contributors: mergify[bot] + +3.4.8 (2025-10-17) +------------------ +* Fix all/any in xml and yaml launch files (backport `#906 `_) (`#912 `_) +* Contributors: mergify[bot] + +3.4.7 (2025-10-06) +------------------ +* Allow providing launch args to include using let in frontends (backport `#848 `_) (`#910 `_) +* Contributors: mergify[bot] + +3.4.6 (2025-08-06) +------------------ +* Using `TimerAction` with `SetParameter` from launch_ros causes crash (backport `#879 `_) (`#893 `_) + Co-authored-by: Christophe Bedard +* Remove LaunchDescriptionArgument (`#891 `_) (`#896 `_) + (cherry picked from commit 8fd76bb11c45cdd072b5f3ef4f3800ff63ee3c9a) + Co-authored-by: Harrison Chen +* Contributors: Rafal Gorecki, mergify[bot] + +3.4.5 (2025-06-23) +------------------ +* Provide copy of launch configs to TimerAction's entities (`#836 `_) (`#878 `_) +* [backport jazzy] Add a `/` path join operator for `PathJoinSubstitution` (`#868 `_) (`#880 `_) +* Contributors: Emerson Knapp, Kenji Brameld (TRACLabs) + +3.4.4 (2025-04-02) +------------------ +* Document substitutions concatenation in architecture doc (`#845 `_) (`#846 `_) + (cherry picked from commit 6fcc79e38fa711e04be3d392a6691a36ea5de214) + Co-authored-by: Christophe Bedard +* Update docs to use proper RST literals (`#837 `_) (`#839 `_) + (cherry picked from commit 3694dc2a14fdf0dd5ccf9e950ab9d8b60bee8a79) + Co-authored-by: Christophe Bedard +* Merge pull request `#834 `_ from ros2/mergify/bp/jazzy/pr-833 + Fix function params indentation (backport `#833 `_) +* Fix function params indentation (`#833 `_) + (cherry picked from commit 151b024a7cfac06f0d56798cbe87ab180b9ea3ab) +* Contributors: Alejandro Hernández Cordero, Christophe Bedard, mergify[bot] + +3.4.3 (2024-12-18) +------------------ +* Fix 'set up' typo (`#813 `_) (`#814 `_) + (cherry picked from commit fda41a218b990c8e3bcc6c3d61f2862704529257) + Co-authored-by: Christophe Bedard +* Contributors: mergify[bot] + +3.4.2 (2024-04-16) +------------------ +* (launch) fix describe of PathJoinSubstitution (`#771 `_) +* Contributors: Matthijs van der Burgh + +3.4.1 (2024-03-28) +------------------ +* Small fixes for modern flake8. (`#772 `_) +* Cleanup some type annotations. +* Contributors: Chris Lalancette + +3.4.0 (2024-02-07) +------------------ +* Rework task exceptions loop. (`#755 `_) +* add format overriding by environment variables (`#722 `_) +* Add exception type to error output (`#753 `_) +* Contributors: Chris Lalancette, David Yackzan, Marc Bestmann + +3.3.0 (2024-01-24) +------------------ +* Let XML executables/nodes be "required" (like in ROS 1) (`#751 `_) +* Contributors: Matthew Elwin + +3.2.1 (2023-12-26) +------------------ + +3.2.0 (2023-10-04) +------------------ +* Add conditional substitution (`#734 `_) +* Contributors: Nick Lamprianidis + +3.1.0 (2023-09-08) +------------------ +* Add maximum times for a process to respawn (`#696 `_) +* Contributors: Santti4go + +3.0.1 (2023-09-07) +------------------ +* Add in a timeout for launch pytests. (`#725 `_) +* Contributors: Chris Lalancette + +3.0.0 (2023-08-21) +------------------ +* Fix remaining occurrences of "There is no current event loop" (`#723 `_) +* Update the launch code for newer flake8 and mypy. (`#719 `_) +* Remove the deprecated some_actions_type.py (`#718 `_) +* Contributors: Chris Lalancette + +2.2.1 (2023-07-11) +------------------ +* Improve launch file parsing error messages (`#626 `_) +* Contributors: Timon Engelke + +2.2.0 (2023-06-07) +------------------ +* Add file-content launch substitution (`#708 `_) +* Contributors: Scott K Logan + +2.1.0 (2023-04-27) +------------------ + +2.0.1 (2023-04-12) +------------------ +* Document LaunchService.{run,run_async}() return value (`#702 `_) +* Contributors: Christophe Bedard + +2.0.0 (2023-04-11) +------------------ +* [rosdoc2] Fix document generation on buildfarm (`#701 `_) +* Enable document generation using rosdoc2 for ament_python pkgs (`#697 `_) +* Remove the import of Literal from entity.py. (`#694 `_) +* Fix flake8 errors. (`#695 `_) +* add symlink to latest log directory (`#686 `_) +* Improve type checking (`#679 `_) +* Contributors: Chris Lalancette, Hervé Audren, Welte, Yadu + +1.4.1 (2023-02-24) +------------------ +* Fixed typos (`#692 `_) +* Contributors: Alejandro Hernández Cordero + +1.4.0 (2023-02-14) +------------------ +* Pass modules to PythonExpression (`#655 `_) +* Allow ReadyToTest() usage in event handler (`#665 `_) +* Expose emulate_tty to xml and yaml launch (`#669 `_) +* Expose sigterm_timeout and sigkill_timeout to xml frontend (`#667 `_) +* [rolling] Update maintainers - 2022-11-07 (`#671 `_) +* Contributors: Aditya Pande, Audrow Nash, Blake Anderson, Nikolai Morin + +1.3.0 (2022-11-02) +------------------ +* Expect deprecation warnings in tests (`#657 `_) +* Fix the restoring of os.environ to maintain type. (`#656 `_) +* Implement Any, All, Equals, and NotEquals substitutions (`#649 `_) +* add LaunchLogDir substitution, replacing log_dir frontend only substitution (`#652 `_) +* Add special cases to coerce "1" and "0" to bool when using bool coercion only (`#651 `_) +* Contributors: Chris Lalancette, Jacob Perron, William Woodall, methylDragon + +1.2.0 (2022-09-13) +------------------ +* Update launch/test/launch/test_execute_local.py +* Added unit test ensuring that output dictionary works with ExecuteLocal +* Addresses issue `#588 `_, allowing dict for 'output' +* Contributors: Matthew Elwin, Michael Jeronimo + +1.1.0 (2022-04-29) +------------------ +* Remove unused variables. (`#612 `_) +* Expose shutdown action to xml frontend (`#611 `_) +* Contributors: Aditya Pande, Chris Lalancette + +1.0.1 (2022-04-13) +------------------ +* Sandbox environment in tests to fix repeated job failures (`#609 `_) +* Contributors: Shane Loretz + +1.0.0 (2022-04-12) +------------------ + +0.23.1 (2022-04-08) +------------------- +* Start Python faster in test_execute_processs_shutdown to avoid flakey failures (`#608 `_) +* Fix warnings from importlib_metdata on Python 3.10. (`#606 `_) +* Contributors: Chris Lalancette, Shane Loretz + +0.23.0 (2022-03-30) +------------------- +* Add boolean substitutions (`#598 `_) +* Contributors: Kenji Miyake + +0.22.0 (2022-03-28) +------------------- +* Support scoping environment variables (`#601 `_) +* Fix awaiting shutdown in launch context (`#603 `_) +* Fix parse respawn var (`#569 `_) +* Make the logged command pretty in ExecuteLocal (`#594 `_) +* Contributors: Jacob Perron, Kosuke Takeuchi + +0.21.1 (2022-03-01) +------------------- +* 'output' is expanded as a substitution in XML/YAML files (`#577 `_) +* Skip warning test if warning already happend (`#585 `_) +* Contributors: Khush Jain, Shane Loretz + +0.21.0 (2022-01-14) +------------------- +* Use asyncio.wait with timeout rather than sleep (`#576 `_) +* Make test_parser compatible with Python older than 3.8 (`#575 `_) +* Propagate exceptions of completed actions to launch service main loop (`#566 `_) +* Warn when loading launch extensions fails (`#572 `_) +* Add in two fixes for Jammy (`#571 `_) +* Contributors: Chris Lalancette, Scott K Logan, Shane Loretz, tumtom + +0.20.0 (2021-11-29) +------------------- +* Evaluate math symbols and functions in python expression (`#557 `_) +* Document TimerAction params (`#558 `_) +* Improve launch arguments introspection (`#556 `_) +* Update maintainers to Aditya Pande and Michel Hidalgo (`#559 `_) +* Updated maintainers (`#555 `_) +* First prototype of native pytest plugin for launch based tests (`#528 `_) +* Allow for raw path specification in IncludeLaunchDescription (`#544 `_) +* Adding Executable description class (`#454 `_) +* event handlers: Allow to match the target action with a callable and not only with an object instance (`#540 `_) +* Add AppendEnvironmentVariable action (`#543 `_) +* Document EnvironmentVariable substitution resolution context caveat (`#541 `_) +* Feature clear launch configs (`#515 `_) +* Add examples to ExecuteProcess docs (`#525 `_) +* Fix `DeclareLaunchArgument` xml parsing and constructor (`#529 `_) +* Fix pytest run on Windows (`#526 `_) +* Improving docs (`#523 `_) +* Add filtering mechanism for executable prefix application (`#522 `_) +* Contributors: Aditya Pande, Audrow Nash, Cameron Miller, Christophe Bedard, David V. Lu!!, Derek Chopp, Immanuel Martini, Ivan Santiago Paunovic, roger-strain + +0.19.0 (2021-07-15) +------------------- +* Make each parser extension provide a set of file extensions (`#516 `_) +* Contributors: Christophe Bedard + +0.18.0 (2021-06-18) +------------------- +* Add missing exec dependency on PyYAML (`#493 `_) +* Refactor TimerAction to allow RosTimer to extend (`#512 `_) +* Improve (Not)Equals condition type hinting (`#510 `_) +* Contributors: HMellor, Rebecca Butler, Scott K Logan + +0.17.0 (2021-04-06) +------------------- +* Only try to wrap the fd in a socket on Windows (`#498 `_) +* Close the socket pair used for signal management (`#497 `_) +* Remove is_winsock_handle() and instead test if wrapping the handle in a socket.socket() works (`#494 `_) +* Add frontend substitution for logging directory (`#490 `_) +* Contributors: Ivan Santiago Paunovic, Jacob Perron + +0.16.0 (2021-03-19) +------------------- +* Add arg_choice arg to DeclareLaunchArguments (`#483 `_) +* Contributors: Victor Lopez + +0.15.0 (2021-01-25) +------------------- +* Support Python 3.8-provided importlib.metadata (`#482 `_) +* Workaround asyncio signal handling on Unix (`#479 `_) +* Handle signals within the asyncio loop. (`#476 `_) +* Support non-interactive launch.LaunchService runs (`#475 `_) +* Contributors: Michel Hidalgo, Scott K Logan + +0.14.0 (2020-12-08) +------------------- +* print stderr message when command failed (`#474 `_) +* Add frontend support for LogInfo action (`#467 `_) +* Contributors: Jacob Perron, Takamasa Horibe + +0.13.0 (2020-11-04) +------------------- +* Validate unparsed attributes and subentities in launch_xml and launch_yaml (`#468 `_) +* Fix bug in launch.actions.TimerAction.parse() (`#470 `_) +* Allow configuring logging directory through environment variables (`#460 `_) +* Update package maintainers (`#465 `_) +* Expose Timer action in launch xml (`#462 `_) +* Fix dollar symbols in substitution grammar (`#461 `_) +* Contributors: Christophe Bedard, Ivan Santiago Paunovic, Michel Hidalgo + +0.12.0 (2020-08-18) +------------------- +* Add new conditions for checking launch configuration values (`#453 `_) +* Contributors: Jacob Perron + +0.11.1 (2020-08-14) +------------------- +* Refactor launch service run_async loop to wait on futures and queued events (`#449 `_) +* Fix documentation typo (`#446 `_) +* Fix type_utils.extract_type() function. (`#445 `_) +* Contributors: Jacob Perron, Michel Hidalgo + +0.11.0 (2020-08-04) +------------------- +* Handle empty strings in type coercion. (`#443 `_) +* Consolidate type_utils in a way that can be reused in substitution results that need to be coerced to a specific type (`#438 `_) +* Delete unnecessary loading of 'launch.frontend.interpolate_substitution_method' entry point that was never used (`#434 `_) +* Avoid side effect, defer until needed (`#432 `_) +* Remove pkg_resources, replace it with the use of the more modern importlib* libraries. (`#430 `_) +* Remove the asyncio.wait loop parameter. (`#429 `_) +* Add pytest.ini so local tests don't display warning (`#428 `_) +* Defer shutdown if already running (`#427 `_) +* Add respawn and respawn_delay support (`#426 `_) +* Fix up parser.py (`#414 `_) +* Contributors: CHEN, Chris Lalancette, Dan Rose, Dirk Thomas, Ivan Santiago Paunovic, Jorge Perez, Michel Hidalgo + +0.10.2 (2020-05-26) +------------------- +* Fix new flake8 errors. (`#420 `_) +* Contributors: Michel Hidalgo + +0.10.1 (2020-05-08) +------------------- +* removed deprecated loop parameter call (`#387 `_) (`#410 `_) +* Contributors: Zahi Kakish + +0.10.0 (2020-04-24) +------------------- +* remove Python 3.5 specific logic (`#401 `_) +* use typing.TYPE_CHECKING to avoid flake8 failure (`#398 `_) +* Suppress flake8 A003 warning (`#395 `_) +* more verbose test_flake8 error messages (same as `ros2/launch_ros#135 `_) +* Remove unnecessary overloads (`#389 `_) +* Simplify type annotation (`#388 `_) +* Add support for anon substitution (`#384 `_) +* Make RegisterEventHandler describe its sub-entities (`#386 `_) +* Fix parsing of cmd line arguments in XML and yaml file (`#379 `_) +* Only allow ExecuteProcess actions to execute once (`#375 `_) +* Fix grammar in docstring (`#373 `_) +* Release loop lock before waiting for it to do work (`#369 `_) +* Adds `Command` substitution (`#367 `_) +* Handle case where output buffer is closed during shutdown (`#365 `_) +* Use imperative mood in docstrings. (`#362 `_) +* Contributors: Dirk Thomas, Ivan Santiago Paunovic, Jacob Perron, Jorge Perez, Peter Baughman, Shane Loretz, Steven! Ragnarök, William Woodall + +0.9.5 (2019-11-13) +------------------ +* fix PendingDeprecationWarning about asyncio.Task.current_task (`#355 `_) +* import collections.abc (`#354 `_) +* Contributors: Dirk Thomas + +0.9.4 (2019-11-08) +------------------ +* Fix ExecuteProcess.get_sub_entities() implementation. (`#353 `_) +* Contributors: Michel Hidalgo + +0.9.3 (2019-10-23) +------------------ + +0.9.2 (2019-10-23) +------------------ + +0.9.1 (2019-09-25) +------------------ +* Fix error in ExecuteProcess parse classmethod (`#339 `_) +* Add support to ignore fields when parsing ExecuteProcess. (`#336 `_) +* Make parse_substitution handle zero-width text. (`#335 `_) +* Fix InvalidLaunchFileError error message. (`#333 `_) +* Fix default Action describe_conditional_sub_entities() implementation. (`#334 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.9.0 (2019-09-18) +------------------ +* Fix "'GroupAction' object has no attribute 'actions'" error (`#327 `_) +* install package marker and manifest (`#323 `_) +* Make IncludeLaunchDescription force launch_arguments (`#284 `_) +* fix expectation for test on Windows (`#319 `_) +* Improve error message when a failing to include launch file (`#315 `_) +* Fix launch argument listing/checking issues (`#310 `_) +* Support LaunchService injection into pre-shutdown tests. (`#308 `_) +* Fix test_expose_decorators failures (`#307 `_) +* Add assertWaitForStartup method to match assertWaitForShutdown (`#278 `_) +* Add support for conditions in IncludeLaunchDescription actions (`#304 `_) +* Convert list comprehension to generator (`#300 `_) +* Don't create a log directory every time the launch logger is imported. (`#299 `_) +* Avoid registering atexit on windows (`#297 `_) +* Correct launch service sigterm handling (`#294 `_) +* fix encoding handling when writing to stdout and log files (`#280 `_) +* More idiomatic typecheck-only imports (`#285 `_) +* Add deprecated argument to LaunchDescriptionn (`#291 `_) +* Add support for not optional environment variable substitution (`#288 `_) +* Add parsing method to PythonExpression substitution (`#281 `_) +* Revert "Revert "[execute_process] emulate_tty configurable and defaults to true"" (`#277 `_) +* Refactor `launch.frontend` file loading (`#271 `_) +* Revert "[execute_process] emulate_tty configurable and defaults to true (`#265 `_)" (`#276 `_) +* fix linter warnings (`#274 `_) +* [execute_process] emulate_tty configurable and defaults to true (`#265 `_) +* Add parsing method for dirname substitution (`#273 `_) +* Add parsing methods for SetEnviromentVariable and UnsetEnviromentVariable (`#272 `_) +* Add parsing method for `DeclareLaunchArgument` (`#270 `_) +* Add frontend module in launch, launch_xml and launch_yaml packages (`#226 `_) +* Add PathJoinSubstitution (`#266 `_) +* Fix EventHandler type hints (`#264 `_) +* Fix build_cop `#214 `_ (`#259 `_) +* Fix get_launch_arguments to not crash on conditional sub entities (`#257 `_) +* Use stderr logger instead of buffer (`#258 `_) +* Line buffering of logger output (`#255 `_) +* Contributors: Chris Lalancette, Dan Rose, Daniel Stonier, Dirk Thomas, Jacob Perron, Michel Hidalgo, Peter Baughman, Scott K Logan, William Woodall, ivanpauno + +0.8.3 (2019-05-29) +------------------ +* Changed IncludeLaunchDescription to not check declared arguments of subentities in order to work around an issue preventing nested arugments until a better fix can be done. (`#249 `_) +* Fixed a bug where logging messages could be duplicated and improved logging's apperance on the CLI. (`#250 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.8.2 (2019-05-20) +------------------ +* Moved some common code to LaunchDescriptionSource (`#234 `_) +* Please flake8 on launch package. (`#241 `_) +* Allow substitution in variable_name of LaunchConfiguration substitutions (`#235 `_) +* Add support for custom launch log file handling (`#233 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.8.1 (2019-05-08) +------------------ + +0.8.0 (2019-04-13) +------------------ +* Added SetEnvironmentVariable and UnsetEnvironmentVariable actions `#164 `_ (`#216 `_) +* Used one sentence per line in docs. (`#219 `_) +* Added support for external ExecuteProcess output overrides. (`#218 `_) +* Logged the launch logging config before running. (`#217 `_) +* Fixed treating stderr output separate from stdout. (`#212 `_) +* Replaced characters with marker when there is a decoding error. (`#202 `_) +* Added LaunchLogger class. (`#145 `_) +* Added test actions. (`#178 `_) +* Fixed to close subprocess transport on execute action cleanup. (`#198 `_) +* Updated logger.warn (deprecated) to logger.warning. (`#199 `_) +* Dropped legacy launch package. (`#191 `_) +* Migrated legacy launch API tests. (`#167 `_) +* Updated to cancel Timers on shutdown. (`#181 `_) +* Fixed timer global init of event handler. (`#184 `_) +* Added support for required nodes (`#179 `_) +* Updated to ensure event handlers add event to context locals. (`#177 `_) +* Added OnProcessStart event handler. (`#171 `_) +* Corrected OnProcessExit typing for Callable. (`#170 `_) +* Removed whitespace in keyword arg. (`#169 `_) +* Contributors: Dirk Thomas, Jacob Perron, Kyle Fazzari, Michel Hidalgo, Peter Baughman, Shane Loretz, William Woodall, ivanpauno, oswinso + +0.7.3 (2018-12-13) +------------------ +* Fixed deprecation warning related to collections.abc (`#158 `_) +* Contributors: William Woodall + +0.7.2 (2018-12-06) +------------------ +* Changed the signit handler os it executes the shutdown event synchronously (`#156 `_) +* Contributors: Jonathan Chapple, Steven! Ragnarök, William Woodall + +0.7.1 (2018-11-16) +------------------ +* Fixed setup.py versions (`#155 `_) +* Contributors: Steven! Ragnarök + +0.7.0 (2018-11-16) +------------------ +* Fixed a bug to ensure that shutdown event is handled correctly (`#154 `_) + * There was a potential race condition in between when the shutdown event is emitted and the rest of the shutdown handling code. + * This introduces an additional await to ensure that the event is emitted before proceeding. +* Fixed example to always use shell to avoid inconsistency of time being a shell command or executable (`#150 `_) +* Added tests for class_tools module and fix is_a_subclass() (`#142 `_) +* Added tests for the utilities module (`#143 `_) +* Added 'handle_once' property for unregistering an EventHandler after one event (`#141 `_) +* Added UnregisterEventHandler action (`#110 `_) +* Changed LaunchService so that it returns ``1`` on caught exceptions from within launch (`#136 `_) +* Added ability to define and pass launch arguments to launch files (`#123 `_) + * Added self descriptions for substitutions + * Added tracebacks back to the output by default + * Added new actions for declaring launch arguments + * Added new method on LaunchDescription which gets all declared arguments within + * Added ability to pass arguments when including a launch description + * Added description for local variables used in Node action + * Added ability to show and pass launch arguments on the command line + * Added an accessor for the Condition of an Action + * Signed-off-by: William Woodall +* Added UnsetLaunchConfiguration action and tests (`#134 `_) + * Signed-off-by: William Woodall +* Added GroupAction for conditionally including other actions and scoping (`#133 `_) + * Signed-off-by: William Woodall +* Added optional name argument to ExecuteProcess (`#129 `_) + * Signed-off-by: William Woodall +* Added a new pair of actions for pushing and popping launch configurations (`#128 `_) + * Signed-off-by: William Woodall +* Contributors: Dirk Thomas, Jacob Perron, Michael Carroll, William Woodall, dhood + +0.6.0 (2018-08-20) +------------------ +* Added a way to include other Python launch files (`#122 `_) + * Signed-off-by: William Woodall +* Implemented the concept of Action conditions (`#121 `_) + * Signed-off-by: William Woodall +* Added IncludeLaunchDescription action (`#120 `_) + * fixes `#115 `_ + * Signed-off-by: William Woodall +* Contributors: William Woodall + +0.5.2 (2018-07-17) +------------------ +* Made a change to avoid reentrancy of signal handlers (`#99 `_) +* Ignored warning for builtins A003 (`#100 `_) +* Fixed exception when launch process with environment variables (`#96 `_) +* Contributors: Shane Loretz, William Woodall, dhood + +0.5.1 (2018-06-27) +------------------ +* Changed the behavior when signaling SIGINT to subprocesses on Windows, where it now does SIGTERM instead, because SIGINT causes a ValueError about SIGINT being an unsupported signal number. (`#94 `_) +* Fixed a bug by avoiding reentrancy in the SIGINT signal handler. (`#92 `_) +* Various Windows fixes. (`#87 `_) + * LaunchService.run() now returns non-0 when there are exceptions in coroutines. + * Updated ``launch_counters.py`` example for Windows. + * Fixed a bug that would cause mismatched asyncio loops in some futures. + * Addressed the fact that ``signal.SIGKILL`` doesn’t exist on Windows, so emulate it in our Event. + * Fixed an issue that resulted in spurious asyncio errors in LaunchService test. +* Contributors: William Woodall, dhood + +0.5.0 (2018-06-19) +------------------ +* Fixed a bug where unclosed asyncio loops caused a traceback on the terminal on exit, but only in Python 3.5 (`#85 `_) +* Changed to use variable typing in comments to support python 3.5 (`#81 `_) +* New launch API (`#74 `_) + * See pull request for more details and links to architecture documentation and the design doc. +* Moved launch source files into launch.legacy namespace (`#73 `_) + * This was in preparation for the new launch API. +* [for launch.legacy] fixed a flake8 warning (`#72 `_) +* [for launch.legacy] set zip_safe to avoid warning during installation (`#71 `_) +* [for launch.legacy] Fix hang on keyboard interrupt (`#69 `_) + * When keyboard interrupt exception occurs loop.run_forever is called. But there is no loop.stop call. This causes a hang. +* Contributors: Devin, Dirk Thomas, William Woodall, dhood diff --git a/src/lib/launch/launch/conftest.py b/src/lib/launch/launch/conftest.py new file mode 100644 index 0000000000..47348f5e46 --- /dev/null +++ b/src/lib/launch/launch/conftest.py @@ -0,0 +1,25 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import PurePath + + +def pytest_ignore_collect(path): + # pytest doctest messes up when trying to import .launch.py packages, ignore them. + # It also messes up when trying to import launch.logging.handlers due to conflicts with + # logging.handlers, ignore that as well. + return str(path).endswith(( + '.launch.py', + str(PurePath('logging') / 'handlers.py'), + )) diff --git a/src/lib/launch/launch/doc/.gitignore b/src/lib/launch/launch/doc/.gitignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/src/lib/launch/launch/doc/.gitignore @@ -0,0 +1 @@ +build diff --git a/src/lib/launch/launch/doc/Makefile b/src/lib/launch/launch/doc/Makefile new file mode 100644 index 0000000000..8ff07eb9a4 --- /dev/null +++ b/src/lib/launch/launch/doc/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = launch +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/src/lib/launch/launch/doc/make.bat b/src/lib/launch/launch/doc/make.bat new file mode 100644 index 0000000000..b71a4a2b0d --- /dev/null +++ b/src/lib/launch/launch/doc/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=launch + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/src/lib/launch/launch/doc/source/architecture.rst b/src/lib/launch/launch/doc/source/architecture.rst new file mode 100644 index 0000000000..c76aef835d --- /dev/null +++ b/src/lib/launch/launch/doc/source/architecture.rst @@ -0,0 +1,215 @@ +Architecture of `launch` +======================== + +`launch` is designed to provide core features like describing actions (e.g. executing a process or including another launch description), generating events, introspecting launch descriptions, and executing launch descriptions. +At the same time, it provides extension points so that the set of things that these core features can operate on, or integrate with, can be expanded with additional packages. + +Launch Entities and Launch Descriptions +--------------------------------------- + +The main object in `launch` is the :class:`launch.LaunchDescriptionEntity`, from which other entities that are "launched" inherit. +This class, or more specifically classes derived from this class, are responsible for capturing the system architect's (a.k.a. the user's) intent for how the system should be launched, as well as how `launch` itself should react to asynchronous events in the system during launch. +A launch description entity has its :meth:`launch.LaunchDescriptionEntity.visit` method called during "launching", and has any of the "describe" methods called during "introspection". +It may also provide a :class:`asyncio.Future` with the :meth:`launch.LaunchDescriptionEntity.get_asyncio_future` method, if it has on-going asynchronous activity after returning from visit. + +When visited, entities may yield additional entities to be visited, and this pattern is used from the "root" of the launch, where a special entity called :class:`launch.LaunchDescription` is provided to start the launch process. + +The :class:`launch.LaunchDescription` class encapsulates the intent of the user as a list of discrete :class:`launch.Action`'s, which are also derived from :class:`launch.LaunchDescriptionEntity`. +As "launch description entities" themselves, these "actions" can either be introspected for analysis without performing the side effects, or the actions can be executed, usually in response to an event in the launch system. + +Additionally, launch descriptions, and the actions that they contain, can have references to :class:`launch.Substitution`'s within them. +These substitutions are things that can be evaluated during launch and can be used to do various things like: get a launch configuration, get an environment variable, or evaluate arbitrary Python expressions. + +Launch descriptions, and the actions contained therein, can either be introspected directly or launched by a :class:`launch.LaunchService`. +A launch service is a long running activity that handles the event loop and dispatches actions. + +Actions +------- + +The aforementioned actions allow the user to express various intentions, and the set of available actions to the user can also be extended by other packages, allowing for domain specific actions. + +Actions can have direct side effects (e.g. run a process or set a configuration variable) and as well they can yield additional actions. +The latter can be used to create "syntactic sugar" actions which simply yield more verbose actions. + +Actions may also have arguments, which can affect the behavior of the actions. +These arguments are where :class:`launch.Substitution`'s can be used to provide more flexibility when describing reusable launch descriptions. + +Basic Actions +^^^^^^^^^^^^^ + +`launch` provides the foundational actions on which other more sophisticated actions may be built. +This is a non-exhaustive list of actions that `launch` may provide: + +- :class:`launch.actions.IncludeLaunchDescription` + + - This action will include another launch description as if it had been copy-pasted to the location of the include action. + +- :class:`launch.actions.SetLaunchConfiguration` + + - This action will set a :class:`launch.LaunchConfiguration` to a specified value, creating it if it doesn't already exist. + - These launch configurations can be accessed by any action via a substitution, but are scoped by default. + +- :class:`launch.actions.DeclareLaunchArgument` + + - This action will declare a launch description argument, which can have a name, default value, and documentation. + - The argument will be exposed via a command line option for a root launch description, or as action configurations to the include launch description action for the included launch description. + +- :class:`launch.actions.SetEnvironmentVariable` + + - This action will set an environment variable by name. + +- :class:`launch.actions.AppendEnvironmentVariable` + + - This action will set an environment variable by name if it does not exist, otherwise it appends to the existing value using a platform-specific separator. + - There is also an option to prepend instead of appending and to provide a custom separator. + +- :class:`launch.actions.GroupAction` + + - This action will yield other actions, but can be associated with conditionals (allowing you to use the conditional on the group action rather than on each sub-action individually) and can optionally scope the launch configurations. + +- :class:`launch.actions.TimerAction` + + - This action will yield other actions after a period of time has passed without being canceled. + +- :class:`launch.actions.ExecuteProcess` + + - This action will execute a process given its path and arguments, and optionally other things like working directory or environment variables. + +- :class:`launch.actions.RegisterEventHandler` + + - This action will register an :class:`launch.EventHandler` class, which takes a user defined lambda to handle some event. + - It could be any event, a subset of events, or one specific event. + +- :class:`launch.actions.UnregisterEventHandler` + + - This action will remove a previously registered event. + +- :class:`launch.actions.EmitEvent` + + - This action will emit an :class:`launch.Event` based class, causing all registered event handlers that match it to be called. + +- :class:`launch.actions.LogInfo`: + + - This action will log a user defined message to the logger, other variants (e.g. ``LogWarn``) could also exist. + +- :class:`launch.actions.RaiseError` + + - This action will stop execution of the launch system and provide a user defined error message. + +More actions can always be defined via extension, and there may even be additional actions defined by `launch` itself, but they are more situational and would likely be built on top of the above actions anyways. + +Base Action +^^^^^^^^^^^ + +All actions need to inherit from the :class:`launch.Action` base class, so that some common interface is available to the launch system when interacting with actions defined by external packages. +Since the base action class is a first class element in a launch description it also inherits from :class:`launch.LaunchDescriptionEntity`, which is the polymorphic type used when iterating over the elements in a launch description. + +Also, the base action has a few features common to all actions, such as some introspection utilities, and the ability to be associated with a single :class:`launch.Condition`, like the :class:`launch.IfCondition` class or the :class:`launch.UnlessCondition` class. + +The action configurations are supplied when the user uses an action and can be used to pass "arguments" to the action in order to influence its behavior, e.g. this is how you would pass the path to the executable in the execute process action. + +If an action is associated with a condition, that condition is evaluated to determine if the action is executed or not. +Even if the associated action evaluates to false the action will be available for introspection. + +Substitutions +------------- + +A substitution is something that cannot, or should not, be evaluated until it's time to execute the launch description that they are used in. +There are many possible variations of a substitution, but here are some of the core ones implemented by `launch` (all of which inherit from :class:`launch.Substitution`): + +- :class:`launch.substitutions.Text` + + - This substitution simply returns the given string when evaluated. + - It is usually used to normalize literals by wrapping them into substitutions in the launch description so they can be concatenated with other substitutions (see :func:`launch.utilities.normalize_to_list_of_substitutions`). + - An iterable of substitutions is concatenated into a single string (see :func:`launch.utilities.perform_substitutions`). + +- :class:`launch.substitutions.PythonExpression` + + - This substitution will evaluate a python expression and get the result as a string. + - You may pass a list of Python modules to the constructor to allow the use of those modules in the evaluated expression. + +- :class:`launch.substitutions.LaunchConfiguration` + + - This substitution gets a launch configuration value, as a string, by name. + +- :class:`launch.substitutions.IfElseSubstitution` + + - This substitution takes a substitution, and if it evaluates to true, then the result is the if_value, else the result is the else_value. + +- :class:`launch.substitutions.LocalSubstitution` + + - This substitution gets a "local" variable out of the context. This is a mechanism that allows a "parent" action to pass information to sub actions. + - As an example, consider this pseudo code example ``OnShutdown(actions=LogInfo(msg=["shutdown due to: ", LocalSubstitution(expression='event.reason')]))``, which assumes that ``OnShutdown`` will put the shutdown event in the locals before ``LogInfo`` is visited. + +- :class:`launch.substitutions.EnvironmentVariable` + + - This substitution gets an environment variable value, as a string, by name. + +- :class:`launch.substitutions.FindExecutable` + + - This substitution locates the full path to an executable on the PATH if it exists. + +The base substitution class provides some common introspection interfaces (which the specific derived substitutions may influence). + +The Launch Service +------------------ + +The launch service is responsible for processing emitted events, dispatching them to event handlers, and executing actions as needed. +The launch service offers three main services: + +- include a launch description + + - can be called from any thread + +- run event loop +- shutdown + + - cancels any running actions and event handlers + - then breaks the event loop if running + - can be called from any thread + +A typical use case would be: + +- create a launch description (programmatically or based on a markup file) +- create a launch service +- include the launch description in the launch service +- add a signal handler for SIGINT that calls shutdown on the launch service +- run the event loop on the launch service + +Additionally you could host some SOA (like REST, SOAP, ROS Services, etc...) server in another thread, which would provide a variety of services, all of which would end up including a launch description in the launch service asynchronously or calling shutdown on the launch service asynchronously. +Remember that a launch description can contain actions to register event handlers, emit events, run processes, etc. +So being able to include arbitrary launch descriptions asynchronously is the only feature you require to do most things dynamically while the launch service is running. + +Event Handlers +-------------- + +Event handlers are represented with the :class:`launch.EventHandler` base class. +Event handlers define two main methods, the :meth:`launch.EventHandler.matches` method and the :meth:`launch.EventHandler.handle` method. +The matches method gets the event as input and must return `True` if the event handler matches that event, or `False` otherwise. +The handle method gets the event and launch context as input, and can optionally (in addition to any side effects) return a list of :class:`launch.LaunchDescriptionEntity` objects to be visited by the launch service. + +Event handlers do not inherit from :class:`launch.LaunchDescriptionEntity`, but can similarly be "visited" for each event processed by the launch service, seeing if ``matches`` returns ``True`` and if so following up with a call to ``handle``, then visiting each of the actions returned by ``handle``, depth-first. + +Extension Points +---------------- + +In order to allow customization of how `launch` is used in specific domains, extension of the core categories of features is provided. +External Python packages, through extension points, may add: + +- new actions + + - must directly or indirectly inherit from :class:`launch.Action` + +- new events + + - must directly or indirectly inherit from :class:`launch.Event` + +- new substitutions + + - must directly or indirectly inherit from :class:`launch.Substitution` + +- kinds of entities in the launch description + + - must directly or indirectly inherit from :class:`launch.LaunchDescriptionEntity` + +In the future, more traditional extensions (like with ``setuptools``' ``entry_point`` feature) may be available via the launch service, e.g. the ability to include some extra entities and event handlers before the launch description is included. diff --git a/src/lib/launch/launch/doc/source/conf.py b/src/lib/launch/launch/doc/source/conf.py new file mode 100644 index 0000000000..6f894ec787 --- /dev/null +++ b/src/lib/launch/launch/doc/source/conf.py @@ -0,0 +1,207 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/stable/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +# The python interpreter that executes this conf.py file will not have this +# package's modules in the system path which will lead to import failures when +# running sphinx-autodoc. As a workaround, the sphinx_builder.py script in +# rosdoc2 will copy this package's modules along with this conf.py into a folder +# with the same name of this package within the docs_build directory. +# Hence we add the parent folder to the system path so that the modules from +# this package can be imported. +sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- +# type: ignore + +project = 'launch' +copyright = '2018, Open Source Robotics Foundation, Inc.' # noqa +author = 'Open Source Robotics Foundation, Inc.' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '0.4.0' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', +] + +# autodoc settings +autodoc_default_options = { + 'special-members': '__init__', + 'class-doc-from': 'class', +} +autodoc_class_signature = 'separated' + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +# +# exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'launchdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +# latex_elements: dict[str, str] = { +# # The paper size ('letterpaper' or 'a4paper'). + +# 'papersize': 'letterpaper', + +# # The font size ('10pt', '11pt' or '12pt'). + +# 'pointsize': '10pt', + +# # Additional stuff for the LaTeX preamble. + +# 'preamble': '', + +# # Latex figure (float) alignment + +# 'figure_align': 'htbp', +# } + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'launch.tex', 'launch Documentation', + 'Open Source Robotics Foundation, Inc.', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'launch', 'launch Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'launch', 'launch Documentation', + author, 'launch', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/src/lib/launch/launch/doc/source/index.rst b/src/lib/launch/launch/doc/source/index.rst new file mode 100644 index 0000000000..efcc560512 --- /dev/null +++ b/src/lib/launch/launch/doc/source/index.rst @@ -0,0 +1,22 @@ +.. launch documentation master file, created by + sphinx-quickstart on Tue May 22 18:18:17 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to launch's documentation! +================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + architecture + modules + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/lib/launch/launch/examples/counter.py b/src/lib/launch/launch/examples/counter.py new file mode 100755 index 0000000000..ccebdef23a --- /dev/null +++ b/src/lib/launch/launch/examples/counter.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Script used in examples to demonstrate different behaviors of called processes.""" + +import argparse +import signal +import sys +import time + + +def main(argv=sys.argv[1:]): + """Run Counter script.""" + parser = argparse.ArgumentParser( + description=( + 'Simple program outputting a counter. ' + 'Even values go to STDERR, odd values go to STDOUT.')) + parser.add_argument( + '--limit', + type=int, + help='The upper limit of the counter when the program terminates.') + parser.add_argument( + '--limit-return-code', + type=int, + default=0, + help='The return code when the program terminates because of reaching the limit.') + parser.add_argument( + '--sleep', + type=float, + default=1.0, + help='The time to sleep between a counter increment.') + parser.add_argument( + '--ignore-sigint', + action='store_true', + default=False, + help='Ignore SIGINT signal, and continue counting.') + parser.add_argument( + '--ignore-sigterm', + action='store_true', + default=False, + help='Ignore SIGTERM signal, and continue counting.') + + args = parser.parse_args(argv) + + if args.ignore_sigint: + print('will be ignoring SIGINT') + signal.signal(signal.SIGINT, lambda signum, frame: print('ignoring SIGINT')) + + if args.ignore_sigterm: + print('will be ignoring SIGTERM') + signal.signal(signal.SIGTERM, lambda signum, frame: print('ignoring SIGTERM')) + + counter = 1 + while True: + if args.limit is not None and counter > args.limit: + return args.limit_return_code + stream = sys.stdout if counter % 2 else sys.stderr + print('Counter: %d' % counter, file=stream) + time.sleep(args.sleep) + counter += 1 + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/lib/launch/launch/examples/disable_emulate_tty_counters.py b/src/lib/launch/launch/examples/disable_emulate_tty_counters.py new file mode 100755 index 0000000000..abf65d3dbd --- /dev/null +++ b/src/lib/launch/launch/examples/disable_emulate_tty_counters.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Copyright 2019 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Script that demonstrates disabling tty emulation. + +This is most significant for python processes which, without tty +emulation, will be buffered by default and have various other +capabilities disabled." +""" + +import os +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # noqa + +import launch # noqa: E402 + + +def generate_launch_description(): + ld = launch.LaunchDescription() + + # Disable tty emulation (on by default). + ld.add_action(launch.actions.SetLaunchConfiguration('emulate_tty', 'false')) + + # Wire up stdout from processes + def on_output(event: launch.events.process.ProcessIO) -> None: + for line in event.text.decode().splitlines(): + print('[{}] {}'.format(event.process_name, line)) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + on_stdout=on_output, + ))) + + # Execute + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, './counter.py'] + )) + return ld + + +if __name__ == '__main__': + # ls = LaunchService(argv=argv, debug=True) # Use this instead to get more debug messages. + ls = launch.LaunchService(argv=sys.argv[1:]) + ls.include_launch_description(generate_launch_description()) + sys.exit(ls.run()) diff --git a/src/lib/launch/launch/examples/launch_counters.example.txt b/src/lib/launch/launch/examples/launch_counters.example.txt new file mode 100644 index 0000000000..20d61ff657 --- /dev/null +++ b/src/lib/launch/launch/examples/launch_counters.example.txt @@ -0,0 +1,84 @@ +$ python3 ./launch_counters.py +Starting introspection of launch description... + + +├── LogInfo('Hello World!') +├── LogInfo('Is that you, ' + EnvVarSub('USER') + '?') +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1036299f8)', handlers={on_stdout: '.on_output at 0x103e93ae8>', on_stderr: '.on_output at 0x103e93ae8>'}) +├── Action('') +├── ExecuteProcess(cmd=[FindExecSub('whoami')], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1045ae2e8)', handlers={on_stdout: '. at 0x1045a48c8>'}) +├── Action('') +├── ExecuteProcess(cmd=['python3', '-u', './counter.py'], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1045ae4a8)', handlers={on_stdout: '.counter_output_handler at 0x1045ad048>', on_stderr: '.counter_output_handler at 0x1045ad048>'}) +├── ExecuteProcess(cmd=['python3', '-u', './counter.py', '--ignore-sigint'], cwd=None, env=None, shell=False) +├── ExecuteProcess(cmd=['python3', '-u', './counter.py', '--ignore-sigint', '--ignore-sigterm'], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): + └── OnShutdown(matcher='event issubclass of launch.events.Shutdown', handler=. at 0x1045ad158>) + +Starting launch of launch description... + +[INFO] [launch.user]: Hello World! +[INFO] [launch.user]: Is that you, william? +[INFO] [launch]: process[whoami-1]: started with pid [22435] +[INFO] [launch]: process[whoami-1]: process has finished cleanly +[INFO] [launch]: process[python3-2]: started with pid [22436] +[INFO] [launch]: process[python3-3]: started with pid [22438] +[INFO] [launch]: process[python3-4]: started with pid [22439] +[INFO] [launch.user]: whoami says you are 'william'. +[whoami-1] william +[whoami-1] 0.00 real 0.00 user 0.00 sys +[python3-3] will be ignoring SIGINT +[python3-3] Counter: 1 +[python3-4] will be ignoring SIGINT +[python3-4] will be ignoring SIGTERM +[python3-4] Counter: 1 +[python3-2] Counter: 1 +[python3-3] Counter: 2 +[python3-4] Counter: 2 +[python3-2] Counter: 2 +[python3-3] Counter: 3 +[python3-4] Counter: 3 +[python3-2] Counter: 3 +[python3-3] Counter: 4 +[python3-4] Counter: 4 +[python3-2] Counter: 4 +[INFO] [launch.user]: Launch was asked to shutdown: saw 'Counter: 4' from 'python3-2' +[INFO] [launch]: sending signal 'SIGINT' to process[python3-4] +[INFO] [launch]: sending signal 'SIGINT' to process[python3-3] +[INFO] [launch]: sending signal 'SIGINT' to process[python3-2] +[python3-4] ignoring SIGINT +[python3-3] ignoring SIGINT +[python3-2] Traceback (most recent call last): +[python3-2] File "./counter.py", line 79, in +[python3-2] sys.exit(main()) +[python3-2] File "./counter.py", line 72, in main +[python3-2] time.sleep(args.sleep) +[python3-2] KeyboardInterrupt +[ERROR] [launch]: process[python3-2] process has died [pid 22436, exit code 1, cmd 'python3 -u ./counter.py']. +[python3-3] Counter: 5 +[python3-4] Counter: 5 +[python3-3] Counter: 6 +[python3-4] Counter: 6 +[python3-3] Counter: 7 +[python3-4] Counter: 7 +[python3-3] Counter: 8 +[python3-4] Counter: 8 +[ERROR] [launch]: process[python3-4] failed to terminate 5 seconds after receiving SIGINT, escalating to SIGTERM +[ERROR] [launch]: process[python3-3] failed to terminate 5 seconds after receiving SIGINT, escalating to SIGTERM +[INFO] [launch]: sending signal 'SIGTERM' to process[python3-4] +[INFO] [launch]: sending signal 'SIGTERM' to process[python3-3] +[python3-3] Counter: 9 +[python3-4] ignoring SIGTERM +[python3-4] Counter: 9 +[ERROR] [launch]: process[python3-3] process has died [pid 22438, exit code -15, cmd 'python3 -u ./counter.py --ignore-sigint']. +[python3-4] Counter: 10 +[python3-4] Counter: 11 +[python3-4] Counter: 12 +[python3-4] Counter: 13 +[ERROR] [launch]: process[python3-4] failed to terminate 10.0 seconds after receiving SIGTERM, escalating to SIGKILL +[INFO] [launch]: sending signal 'SIGKILL' to process[python3-4] +[ERROR] [launch]: process[python3-4] process has died [pid 22439, exit code -9, cmd 'python3 -u ./counter.py --ignore-sigint --ignore-sigterm']. diff --git a/src/lib/launch/launch/examples/launch_counters.py b/src/lib/launch/launch/examples/launch_counters.py new file mode 100755 index 0000000000..e906f74e48 --- /dev/null +++ b/src/lib/launch/launch/examples/launch_counters.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 + +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Script that demonstrates launch and subprocesses of varying behavior. + +For an example of expected output, see the file next to this one called +"launch_counter_good_bad_ugly.example.txt". +""" + +import os +import platform +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # noqa + +import launch # noqa: E402 +from launch import LaunchDescription # noqa: E402 +from launch import LaunchIntrospector # noqa: E402 +from launch import LaunchService # noqa: E402 +import launch.actions # noqa: E402 +import launch.events # noqa: E402 +import launch.substitutions # noqa: E402 + + +def main(argv=sys.argv[1:]): + """Run Counter via launch.""" + # Configure rotating logs. + launch.logging.launch_config.log_handler_factory = \ + lambda path, encoding=None: launch.logging.handlers.RotatingFileHandler( + path, maxBytes=1024, backupCount=3, encoding=encoding) + + # Any number of actions can optionally be given to the constructor of LaunchDescription. + # Or actions/entities can be added after creating the LaunchDescription. + user_env_var = 'USERNAME' if platform.system() == 'Windows' else 'USER' + ld = LaunchDescription([ + launch.actions.LogInfo(msg='Hello World!'), + launch.actions.LogInfo(msg=( + 'Is that you, ', launch.substitutions.EnvironmentVariable(name=user_env_var), '?' + )), + ]) + + # Setup a custom event handler for all stdout/stderr from processes. + # Later, this will be a configurable, but always present, extension to the LaunchService. + def on_output(event: launch.events.process.ProcessIO) -> None: + for line in event.text.decode().splitlines(): + print('[{}] {}'.format(event.process_name, line)) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + # this is the action ^ and this, the event handler ^ + on_stdout=on_output, + on_stderr=on_output, + ))) + + # Run whoami, and use its output to log the name of the user. + # Prefix just the whoami process with `time`. + ld.add_action(launch.actions.SetLaunchConfiguration('launch-prefix', 'time')) + # Run whoami, but keep handle to action to make a targeted event handler. + if platform.system() == 'Windows': + whoami_cmd = ['echo', '%USERNAME%'] + else: + whoami_cmd = [launch.substitutions.FindExecutable(name='whoami')] + whoami_action = launch.actions.ExecuteProcess( + cmd=whoami_cmd, + shell=True + ) + ld.add_action(whoami_action) + # Make event handler that uses the output. + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + target_action=whoami_action, + # The output of `time` will be skipped since `time`'s output always goes to stderr. + on_stdout=lambda event: launch.actions.LogInfo( + msg="whoami says you are '{}'.".format(event.text.decode().strip()) + ), + ))) + # Unset launch prefix to prevent other process from getting this setting. + ld.add_action(launch.actions.SetLaunchConfiguration('launch-prefix', '')) + + # Run the counting program, with default options. + counter_action = launch.actions.ExecuteProcess(cmd=[sys.executable, '-u', './counter.py']) + ld.add_action(counter_action) + + # Setup an event handler for just this process which will exit when `Counter: 4` is seen. + def counter_output_handler(event): + target_str = 'Counter: 4' + if target_str in event.text.decode(): + return launch.actions.EmitEvent(event=launch.events.Shutdown( + reason="saw '{}' from '{}'".format(target_str, event.process_name) + )) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + target_action=counter_action, + on_stdout=counter_output_handler, + on_stderr=counter_output_handler, + ))) + + # Run the counter a few more times, with various options. + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, '-u', './counter.py', '--ignore-sigint'] + )) + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, '-u', './counter.py', '--ignore-sigint', '--ignore-sigterm'] + )) + + # Add our own message for when shutdown is requested. + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnShutdown( + on_shutdown=[launch.actions.LogInfo(msg=[ + 'Launch was asked to shutdown: ', + launch.substitutions.LocalSubstitution('event.reason'), + ])], + ))) + + print('Starting introspection of launch description...') + print('') + + print(LaunchIntrospector().format_launch_description(ld)) + + print('') + print('Starting launch of launch description...') + print('') + + # ls = LaunchService(argv=argv, debug=True) # Use this instead to get more debug messages. + ls = LaunchService(argv=argv) + ls.include_launch_description(ld) + return ls.run() + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/lib/launch/launch/launch/__init__.py b/src/lib/launch/launch/launch/__init__.py new file mode 100644 index 0000000000..c5b506c550 --- /dev/null +++ b/src/lib/launch/launch/launch/__init__.py @@ -0,0 +1,65 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Main entry point for the `launch` package.""" + +from . import actions +from . import conditions +from . import descriptions +from . import events +from . import frontend +from . import logging +from . import substitutions +from .action import Action +from .condition import Condition +from .event import Event +from .event_handler import EventHandler +from .invalid_launch_file_error import InvalidLaunchFileError +from .launch_context import LaunchContext +from .launch_description import LaunchDescription +from .launch_description_entity import LaunchDescriptionEntity +from .launch_description_source import LaunchDescriptionSource +from .launch_introspector import LaunchIntrospector +from .launch_service import LaunchService +from .some_entities_type import SomeEntitiesType +from .some_entities_type import SomeEntitiesType_types_tuple +from .some_substitutions_type import SomeSubstitutionsType +from .some_substitutions_type import SomeSubstitutionsType_types_tuple +from .substitution import Substitution + +__all__ = [ + 'actions', + 'conditions', + 'descriptions', + 'events', + 'frontend', + 'logging', + 'substitutions', + 'Action', + 'Condition', + 'Event', + 'EventHandler', + 'InvalidLaunchFileError', + 'LaunchContext', + 'LaunchDescription', + 'LaunchDescriptionEntity', + 'LaunchDescriptionSource', + 'LaunchIntrospector', + 'LaunchService', + 'SomeEntitiesType', + 'SomeEntitiesType_types_tuple', + 'SomeSubstitutionsType', + 'SomeSubstitutionsType_types_tuple', + 'Substitution', +] diff --git a/src/lib/launch/launch/launch/action.py b/src/lib/launch/launch/launch/action.py new file mode 100644 index 0000000000..4834680f9f --- /dev/null +++ b/src/lib/launch/launch/launch/action.py @@ -0,0 +1,129 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for Action class.""" + +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional +from typing import Text +from typing import Tuple + +from .condition import Condition +from .launch_context import LaunchContext +from .launch_description_entity import LaunchDescriptionEntity + +if False: + from .frontend import Entity # noqa: F401 + from .frontend import Parser # noqa: F401 + + +class Action(LaunchDescriptionEntity): + """ + LaunchDescriptionEntity that represents a user intention to do something. + + The action describes the intention to do something, but also can be + executed given a :class:`launch.LaunchContext` at runtime. + """ + + def __init__(self, *, condition: Optional[Condition] = None) -> None: + """ + Create an Action. + + If the conditions argument is not None, the condition object will be + evaluated while being visited and the action will only be executed if + the condition evaluates to True. + + :param condition: Either a :py:class:`Condition` or None + """ + self.__condition = condition + + @staticmethod + def parse(entity: 'Entity', parser: 'Parser'): + """ + Return the `Action` action and kwargs for constructing it. + + This is only intended for code reuse. + This class is not exposed with `expose_action`. + """ + # Import here for avoiding cyclic imports. + from .conditions import IfCondition + from .conditions import UnlessCondition + if_cond = entity.get_attr('if', optional=True) + unless_cond = entity.get_attr('unless', optional=True) + kwargs: Dict[str, Condition] = {} + if if_cond is not None and unless_cond is not None: + raise RuntimeError("if and unless conditions can't be used simultaneously") + if if_cond is not None: + kwargs['condition'] = IfCondition( + predicate_expression=parser.parse_substitution(if_cond) + ) + if unless_cond is not None: + kwargs['condition'] = UnlessCondition( + predicate_expression=parser.parse_substitution(unless_cond) + ) + return Action, kwargs + + @property + def condition(self) -> Optional[Condition]: + """Getter for condition.""" + return self.__condition + + def describe(self) -> Text: + """Return a description of this Action.""" + return self.__repr__() + + def get_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Return subentities.""" + return [] + + def describe_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Override describe_sub_entities from LaunchDescriptionEntity.""" + return self.get_sub_entities() if self.condition is None else [] + + def describe_conditional_sub_entities(self) -> List[Tuple[ + Text, # text description of the condition + Iterable[LaunchDescriptionEntity], # list of conditional sub-entities + ]]: + """Override describe_conditional_sub_entities from LaunchDescriptionEntity.""" + return [ + ('Conditionally included by {}'.format(self.describe()), self.get_sub_entities()) + ] if self.condition is not None else [] + + def visit(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """Override visit from LaunchDescriptionEntity so that it executes.""" + if self.__condition is None or self.__condition.evaluate(context): + try: + return self.execute(context) + finally: + from .events import ExecutionComplete # noqa + event = ExecutionComplete(action=self) + if context.would_handle_event(event): + future = self.get_asyncio_future() + if future is not None: + future.add_done_callback( + lambda _: context.emit_event_sync(event) + ) + else: + context.emit_event_sync(event) + return None + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """ + Execute the action. + + Should be overridden by derived class, but by default does nothing. + """ + pass diff --git a/src/lib/launch/launch/launch/actions/__init__.py b/src/lib/launch/launch/launch/actions/__init__.py new file mode 100644 index 0000000000..ae0577e33a --- /dev/null +++ b/src/lib/launch/launch/launch/actions/__init__.py @@ -0,0 +1,67 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""actions Module.""" + +from .declare_launch_argument import DeclareLaunchArgument +from .append_environment_variable import AppendEnvironmentVariable # noqa: I100 +from .emit_event import EmitEvent +from .execute_local import ExecuteLocal +from .execute_process import ExecuteProcess +from .group_action import GroupAction +from .include_launch_description import IncludeLaunchDescription +from .log_info import LogInfo +from .opaque_coroutine import OpaqueCoroutine +from .opaque_function import OpaqueFunction +from .pop_environment import PopEnvironment +from .pop_launch_configurations import PopLaunchConfigurations +from .push_environment import PushEnvironment +from .push_launch_configurations import PushLaunchConfigurations +from .register_event_handler import RegisterEventHandler +from .reset_environment import ResetEnvironment +from .reset_launch_configurations import ResetLaunchConfigurations +from .set_environment_variable import SetEnvironmentVariable +from .set_launch_configuration import SetLaunchConfiguration +from .shutdown_action import Shutdown +from .timer_action import TimerAction +from .unregister_event_handler import UnregisterEventHandler +from .unset_environment_variable import UnsetEnvironmentVariable +from .unset_launch_configuration import UnsetLaunchConfiguration + +__all__ = [ + 'AppendEnvironmentVariable', + 'DeclareLaunchArgument', + 'EmitEvent', + 'ExecuteLocal', + 'ExecuteProcess', + 'GroupAction', + 'IncludeLaunchDescription', + 'LogInfo', + 'OpaqueCoroutine', + 'OpaqueFunction', + 'PopEnvironment', + 'PopLaunchConfigurations', + 'PushEnvironment', + 'PushLaunchConfigurations', + 'ResetEnvironment', + 'ResetLaunchConfigurations', + 'RegisterEventHandler', + 'SetEnvironmentVariable', + 'SetLaunchConfiguration', + 'Shutdown', + 'TimerAction', + 'UnregisterEventHandler', + 'UnsetEnvironmentVariable', + 'UnsetLaunchConfiguration', +] diff --git a/src/lib/launch/launch/launch/actions/append_environment_variable.py b/src/lib/launch/launch/launch/actions/append_environment_variable.py new file mode 100644 index 0000000000..0c0c753677 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/append_environment_variable.py @@ -0,0 +1,121 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the AppendEnvironmentVariable action.""" + +import os +from typing import List +from typing import Union + +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions +from ..utilities.type_utils import normalize_typed_substitution +from ..utilities.type_utils import NormalizedValueType +from ..utilities.type_utils import perform_typed_substitution + + +@expose_action('append_env') +class AppendEnvironmentVariable(Action): + """ + Action that appends to an environment variable if it exists and sets it if it does not. + + It can optionally prepend instead of appending. + It can also optionally use a custom separator, with the default being a platform-specific + separator, `os.pathsep`. + """ + + def __init__( + self, + name: SomeSubstitutionsType, + value: SomeSubstitutionsType, + prepend: Union[bool, SomeSubstitutionsType] = False, + separator: SomeSubstitutionsType = os.pathsep, + **kwargs, + ) -> None: + """ + Create an AppendEnvironmentVariable action. + + All parameters can be provided as substitutions. + A substitution for the prepend parameter will be coerced to `bool` following YAML rules. + + :param name: the name of the environment variable + :param value: the value to set or append + :param prepend: whether the value should be prepended instead + :param separator: the separator to use, defaulting to a platform-specific separator + """ + super().__init__(**kwargs) + self.__name = normalize_to_list_of_substitutions(name) + self.__value = normalize_to_list_of_substitutions(value) + self.__prepend = normalize_typed_substitution(prepend, bool) + self.__separator = normalize_to_list_of_substitutions(separator) + + @classmethod + def parse( + cls, + entity: Entity, + parser: Parser, + ): + """Parse an 'append_env' entity.""" + _, kwargs = super().parse(entity, parser) + kwargs['name'] = parser.parse_substitution(entity.get_attr('name')) + kwargs['value'] = parser.parse_substitution(entity.get_attr('value')) + prepend = entity.get_attr('prepend', optional=True, data_type=bool, can_be_str=True) + if prepend is not None: + kwargs['prepend'] = parser.parse_if_substitutions(prepend) + separator = entity.get_attr('separator', optional=True) + if separator is not None: + kwargs['separator'] = parser.parse_substitution(separator) + return cls, kwargs + + @property + def name(self) -> List[Substitution]: + """Getter for the name of the environment variable to be set or appended to.""" + return self.__name + + @property + def value(self) -> List[Substitution]: + """Getter for the value of the environment variable to be set or appended.""" + return self.__value + + @property + def prepend(self) -> NormalizedValueType: + """Getter for the prepend flag.""" + return self.__prepend + + @property + def separator(self) -> List[Substitution]: + """Getter for the separator.""" + return self.__separator + + def execute(self, context: LaunchContext) -> None: + """Execute the action.""" + name = perform_substitutions(context, self.name) + value = perform_substitutions(context, self.value) + prepend = perform_typed_substitution(context, self.prepend, bool) + separator = perform_substitutions(context, self.separator) + if name in context.environment: + context.environment[name] = \ + context.environment[name] + separator + value \ + if not prepend \ + else value + separator + context.environment[name] + else: + context.environment[name] = value + return None diff --git a/src/lib/launch/launch/launch/actions/conftest.py b/src/lib/launch/launch/launch/actions/conftest.py new file mode 100644 index 0000000000..ad51226047 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/conftest.py @@ -0,0 +1,34 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# imports needed for doctests +import launch +import launch.actions +import launch.conditions +import launch.substitutions + +import pytest + + +@pytest.fixture(autouse=True) +def add_imports_to_doctest_namespace(doctest_namespace): + doctest_namespace['launch'] = launch + doctest_namespace['LaunchDescription'] = launch.LaunchDescription + for subpackage in ( + launch.actions, + launch.conditions, + launch.substitutions, + ): + for x in subpackage.__all__: + doctest_namespace[x] = getattr(subpackage, x) diff --git a/src/lib/launch/launch/launch/actions/declare_launch_argument.py b/src/lib/launch/launch/launch/actions/declare_launch_argument.py new file mode 100644 index 0000000000..d292abe33d --- /dev/null +++ b/src/lib/launch/launch/launch/actions/declare_launch_argument.py @@ -0,0 +1,223 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the DeclareLaunchArgument action.""" + +from typing import List +from typing import Optional +from typing import Text + +import launch.logging + +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser # noqa: F401 +from ..launch_context import LaunchContext +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions + + +@expose_action('arg') +class DeclareLaunchArgument(Action): + """ + Action that declares a new launch argument. + + A launch argument is stored in a "launch configuration" of the same name. + See :py:class:`launch.actions.SetLaunchConfiguration` and + :py:class:`launch.substitutions.LaunchConfiguration`. + + Any launch arguments declared within a :py:class:`launch.LaunchDescription` + will be exposed as arguments when that launch description is included, e.g. + as additional parameters in the + :py:class:`launch.actions.IncludeLaunchDescription` action or as + command-line arguments when launched with ``ros2 launch ...``. + + In addition to the name, which is also where the argument result is stored, + launch arguments may have a default value, a list of valid value choices, and a description. + If a default value is given, then the argument becomes optional and the + default value is placed in the launch configuration instead. + If no default value is given and no value is given when including the + launch description, then an error occurs. + If a choice list is given, and the given value is not in it, an error + occurs. + + The default value may use Substitutions, but the name and description can + only be Text, since they need a meaningful value before launching, e.g. + when listing the command-line arguments. + + Note that declaring a launch argument needs to be in a part of the launch + description that is describable without launching. + For example, if you declare a launch argument with this action from within + a condition group or as a callback to an event handler, then it may not be + possible for a tool like ``ros2 launch`` to know about the argument before + launching the launch description. + In such cases, the argument will not be visible on the command line but + may raise an exception if that argument is not satisfied once visited (and + has no default value). + + Put another way, the post-condition of this action being visited is either + that a launch configuration of the same name is set with a value or an + exception is raised because none is set and there is no default value. + However, the pre-condition does not guarantee that the argument was visible + if behind condition or situational inclusions. + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument('simple_argument'), + ... DeclareLaunchArgument('with_default_value', default_value='default'), + ... DeclareLaunchArgument( + ... 'with_default_and_description', + ... default_value='some_default', + ... description='this argument is used to configure ...'), + ... DeclareLaunchArgument( + ... 'mode', + ... default_value='A', + ... description='Choose between mode A and mode B', + ... choices=['A', 'B']), + ... # other actions here, ... + ... ]) + + .. code-block:: xml + + + + + + + """ + + def __init__( + self, + name: Text, + *, + default_value: Optional[SomeSubstitutionsType] = None, + description: Optional[Text] = None, + choices: Optional[List[Text]] = None, + **kwargs + ) -> None: + """Create a DeclareLaunchArgument action.""" + super().__init__(**kwargs) + self.__name = name + self.__logger = launch.logging.get_logger(__name__) + if default_value is None: + self.__default_value = default_value + else: + self.__default_value = normalize_to_list_of_substitutions(default_value) + if choices is not None: + if len(choices) == 0: + self.__logger.error( + 'Provided choices arg is empty. Use None to ignore the choice list.') + raise RuntimeError( + 'Provided choices arg is empty. Use None to ignore the choice list.') + + # Check if a non substitution default value is provided and is a valid choice + if default_value is not None and not isinstance(default_value, (Substitution, list)): + if default_value not in choices: + self.__logger.error( + 'Provided default_value "{}" is not in provided choices "{}".'.format( + default_value, choices) + ) + raise RuntimeError( + 'Provided default_value "{}" is not in provided choices "{}".'.format( + default_value, choices)) + + self.__description = '' + if description is None: + if choices is None: + self.__description = 'no description given' + else: + self.__description = 'One of: ' + str(choices) + else: + self.__description = description + if choices is not None: + if not self.__description.endswith('.'): + self.__description += '.' + self.__description += ' Valid choices are: ' + str(choices) + + self.__choices = choices + + # This is used later to determine if this launch argument will be + # conditionally visited. + # Its value will be read and set at different times and so the value + # may change depending at different times based on the context. + self._conditionally_included = False + + @classmethod + def parse( + cls, + entity: Entity, + parser: 'Parser' + ): + """Parse `arg` tag.""" + _, kwargs = super().parse(entity, parser) + kwargs['name'] = parser.escape_characters(entity.get_attr('name')) + default_value = entity.get_attr('default', optional=True) + if default_value is not None: + kwargs['default_value'] = parser.parse_substitution(default_value) + description = entity.get_attr('description', optional=True) + if description is not None: + kwargs['description'] = parser.escape_characters(description) + choices = entity.get_attr('choice', data_type=List[Entity], optional=True) + if choices is not None: + kwargs['choices'] = [ + parser.escape_characters(choice.get_attr('value')) for choice in choices + ] + return cls, kwargs + + @property + def name(self) -> Text: + """Getter for self.__name.""" + return self.__name + + @property + def default_value(self) -> Optional[List[Substitution]]: + """Getter for self.__default_value.""" + return self.__default_value + + @property + def description(self) -> Text: + """Getter for self.__description.""" + return self.__description + + @property + def choices(self) -> Optional[List[Text]]: + """Getter for self.__choices.""" + return self.__choices + + def execute(self, context: LaunchContext): + """Execute the action.""" + if self.name not in context.launch_configurations: + if self.default_value is None: + # Argument not already set and no default value given, error. + self.__logger.error( + 'Required launch argument "{}" (description: "{}") was not provided' + .format(self.name, self.description) + ) + raise RuntimeError( + 'Required launch argument "{}" was not provided.'.format(self.name)) + context.launch_configurations[self.name] = \ + perform_substitutions(context, self.default_value) + + if self.__choices is not None: + value = context.launch_configurations[self.name] + if value not in self.__choices: + error_msg = ('Argument "{}" provided value "{}" is not valid. Valid options ' + 'are: {}'.format(self.name, value, self.__choices)) + self.__logger.error(error_msg) + raise RuntimeError(error_msg) diff --git a/src/lib/launch/launch/launch/actions/emit_event.py b/src/lib/launch/launch/launch/actions/emit_event.py new file mode 100644 index 0000000000..f373e90d96 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/emit_event.py @@ -0,0 +1,40 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the EmitEvent action.""" + +from ..action import Action +from ..event import Event +from ..launch_context import LaunchContext +from ..utilities import is_a_subclass + + +class EmitEvent(Action): + """Action that emits an event when executed.""" + + def __init__(self, *, event: Event, **kwargs) -> None: + """Create an EmitEvent action.""" + super().__init__(**kwargs) + if not is_a_subclass(event, Event): + raise RuntimeError("EmitEvent() expected an event instance, got '{}'.".format(event)) + self.__event = event + + @property + def event(self): + """Getter for self.__event.""" + return self.__event + + def execute(self, context: LaunchContext): + """Execute the action.""" + context.emit_event_sync(self.__event) diff --git a/src/lib/launch/launch/launch/actions/execute_local.py b/src/lib/launch/launch/launch/actions/execute_local.py new file mode 100644 index 0000000000..487ae905c4 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/execute_local.py @@ -0,0 +1,757 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the ExecuteLocal action.""" + +import asyncio +import io +import logging +import os +import platform +import signal +import traceback +from typing import Any # noqa: F401 +from typing import Callable +from typing import cast +from typing import Dict +from typing import List +from typing import Optional +from typing import Text +from typing import Tuple # noqa: F401 +from typing import Union + +import launch.logging + +from osrf_pycommon.process_utils import async_execute_process # type: ignore +from osrf_pycommon.process_utils import AsyncSubprocessProtocol + +from .emit_event import EmitEvent +from .opaque_function import OpaqueFunction +from .timer_action import TimerAction + +from ..action import Action +from ..conditions import evaluate_condition_expression +from ..descriptions import Executable +from ..event import Event +from ..event_handler import EventHandler +from ..event_handlers import OnProcessExit +from ..event_handlers import OnProcessIO +from ..event_handlers import OnProcessStart +from ..event_handlers import OnShutdown +from ..events import matches_action +from ..events import Shutdown +from ..events.process import ProcessExited +from ..events.process import ProcessIO +from ..events.process import ProcessStarted +from ..events.process import ProcessStderr +from ..events.process import ProcessStdin +from ..events.process import ProcessStdout +from ..events.process import ShutdownProcess +from ..events.process import SignalProcess +from ..launch_context import LaunchContext +from ..launch_description import LaunchDescription +from ..launch_description_entity import LaunchDescriptionEntity +from ..some_entities_type import SomeEntitiesType +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution # noqa: F401 +from ..substitutions import LaunchConfiguration +from ..substitutions import PythonExpression +from ..utilities import is_a_subclass +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions +from ..utilities.type_utils import normalize_typed_substitution +from ..utilities.type_utils import perform_typed_substitution + + +class ExecuteLocal(Action): + """Action that begins executing a process on the local system and sets up event handlers.""" + + def __init__( + self, + *, + process_description: Executable, + shell: bool = False, + sigterm_timeout: SomeSubstitutionsType = LaunchConfiguration( + 'sigterm_timeout', default=5), + sigkill_timeout: SomeSubstitutionsType = LaunchConfiguration( + 'sigkill_timeout', default=5), + emulate_tty: bool = False, + output: SomeSubstitutionsType = 'log', + output_format: Text = '[{this.process_description.final_name}] {line}', + cached_output: bool = False, + log_cmd: bool = False, + on_exit: Optional[Union[ + SomeEntitiesType, + Callable[[ProcessExited, LaunchContext], Optional[SomeEntitiesType]] + ]] = None, + respawn: Union[bool, SomeSubstitutionsType] = False, + respawn_delay: Optional[float] = None, + respawn_max_retries: int = -1, + **kwargs + ) -> None: + """ + Construct an ExecuteLocal action. + + Many arguments are passed eventually to :class:`subprocess.Popen`, so + see the documentation for the class for additional details. + + This action, once executed, registers several event handlers for + various process related events and will also emit events asynchronously + when certain events related to the process occur. + + Handled events include: + + - launch.events.process.ShutdownProcess: + + - begins standard shutdown procedure for a running executable + + - launch.events.process.SignalProcess: + + - passes the signal provided by the event to the running process + + - launch.events.process.ProcessStdin: + + - passes the text provided by the event to the stdin of the process + + - launch.events.Shutdown: + + - same as ShutdownProcess + + Emitted events include: + + - launch.events.process.ProcessStarted: + + - emitted when the process starts + + - launch.events.process.ProcessExited: + + - emitted when the process exits + - event contains return code + + - launch.events.process.ProcessStdout and launch.events.process.ProcessStderr: + + - emitted when the process produces data on either the stdout or stderr pipes + - event contains the data from the pipe + + Note that output is just stored in this class and has to be properly + implemented by the event handlers for the process's ProcessIO events. + + :param: process_description the `launch.descriptions.Executable` to execute + as a local process + :param: shell if True, a shell is used to execute the cmd + :param: sigterm_timeout time until shutdown should escalate to SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigterm_timeout' + :param: sigkill_timeout time until escalating to SIGKILL after SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigkill_timeout' + :param: emulate_tty emulate a tty (terminal), defaults to False, but can + be overridden with the LaunchConfiguration called 'emulate_tty', + the value of which is evaluated as true or false according to + :py:func:`evaluate_condition_expression`. + Throws :py:exc:`InvalidConditionExpressionError` if the + 'emulate_tty' configuration does not represent a boolean. + :param: output configuration for process output logging. Defaults to 'log' + i.e. log both stdout and stderr to launch main log file and stderr to + the screen. + Overridden externally by the OVERRIDE_LAUNCH_PROCESS_OUTPUT envvar value. + See `launch.logging.get_output_loggers()` documentation for further + reference on all available options. + :param: output_format for logging each output line, supporting `str.format()` + substitutions with the following keys in scope: `line` to reference the raw + output line and `this` to reference this action instance. + :param: log_cmd if True, prints the final cmd before executing the + process, which is useful for debugging when substitutions are + involved. + :param: cached_output if `True`, both stdout and stderr will be cached. + Use get_stdout() and get_stderr() to read the buffered output. + :param: on_exit list of actions to execute upon process exit. + :param: respawn if 'True', relaunch the process that abnormally died. + Either a boolean or a Substitution to be resolved at runtime. Defaults to 'False'. + :param: respawn_delay a delay time to relaunch the died process if respawn is 'True'. + :param: respawn_max_retries number of times to respawn the process if respawn is 'True'. + A negative value will respawn an infinite number of times (default behavior). + """ + super().__init__(**kwargs) + self.__process_description = process_description + self.__shell = shell + self.__sigterm_timeout = normalize_to_list_of_substitutions(sigterm_timeout) + self.__sigkill_timeout = normalize_to_list_of_substitutions(sigkill_timeout) + self.__emulate_tty = emulate_tty + # Note: we need to use a temporary here so that we don't assign values with different types + # to the same variable + tmp_output: SomeSubstitutionsType = os.environ.get( + 'OVERRIDE_LAUNCH_PROCESS_OUTPUT', output + ) + self.__output: Union[dict, List[Substitution]] + if not isinstance(tmp_output, dict): + self.__output = normalize_to_list_of_substitutions(tmp_output) + else: + self.__output = tmp_output + self.__output_format = output_format + + self.__log_cmd = log_cmd + self.__cached_output = cached_output + self.__on_exit = on_exit + self.__respawn = normalize_typed_substitution(respawn, bool) + self.__respawn_delay = respawn_delay + + self.__respawn_max_retries = respawn_max_retries + self.__respawn_retries = 0 + + self.__process_event_args = None # type: Optional[Dict[Text, Any]] + self._subprocess_protocol = None # type: Optional[Any] + self._subprocess_transport = None + self.__completed_future = None # type: Optional[asyncio.Future] + self.__shutdown_future = None # type: Optional[asyncio.Future] + self.__sigterm_timer = None # type: Optional[TimerAction] + self.__sigkill_timer = None # type: Optional[TimerAction] + self.__stdout_buffer = io.StringIO() + self.__stderr_buffer = io.StringIO() + + self.__executed = False + + @property + def process_description(self): + """Getter for process_description.""" + return self.__process_description + + @property + def shell(self): + """Getter for shell.""" + return self.__shell + + @property + def emulate_tty(self): + """Getter for emulate_tty.""" + return self.__emulate_tty + + @property + def sigkill_timeout(self): + """Getter for sigkill timeout.""" + return self.__sigkill_timeout + + @property + def sigterm_timeout(self): + """Getter for sigterm timeout.""" + return self.__sigterm_timeout + + @property + def output(self): + """Getter for output.""" + return self.__output + + @property + def process_details(self): + """Getter for the process details, e.g. name, pid, cmd, etc., or None if not started.""" + return self.__process_event_args + + def get_sub_entities(self): + if isinstance(self.__on_exit, list): + return self.__on_exit + return [] + + def _shutdown_process(self, context, *, send_sigint): + if self.__shutdown_future is None or self.__shutdown_future.done(): + # Execution not started or already done, nothing to do. + return None + + if self.__completed_future is None: + # Execution not started so nothing to do, but self.__shutdown_future should prevent + # execution from starting in the future. + self.__shutdown_future.set_result(None) + return None + if self.__completed_future.done(): + # If already done, then nothing to do. + self.__shutdown_future.set_result(None) + return None + + # Defer shut down if the process is scheduled to be started + if (self.process_details is None or self._subprocess_transport is None): + # Do not set shutdown result, as event is postponed + context.register_event_handler( + OnProcessStart( + on_start=lambda event, context: + self._shutdown_process(context, send_sigint=send_sigint))) + return None + + self.__shutdown_future.set_result(None) + + # Otherwise process is still running, start the shutdown procedures. + context.extend_locals({'process_name': self.process_details['name']}) + actions_to_return = self.__get_shutdown_timer_actions() + if send_sigint: + actions_to_return.append(self.__get_sigint_event()) + return actions_to_return + + def __on_shutdown_process_event( + self, + context: LaunchContext + ) -> Optional[LaunchDescription]: + typed_event = cast(ShutdownProcess, context.locals.event) + if not typed_event.process_matcher(self): + # this event whas not intended for this process + return None + return self._shutdown_process(context, send_sigint=True) + + def __on_signal_process_event( + self, + context: LaunchContext + ) -> Optional[LaunchDescription]: + typed_event = cast(SignalProcess, context.locals.event) + if not typed_event.process_matcher(self): + # this event whas not intended for this process + return None + if self.process_details is None: + raise RuntimeError('Signal event received before execution.') + if self._subprocess_transport is None: + raise RuntimeError('Signal event received before subprocess transport available.') + if self._subprocess_protocol.complete.done(): + # the process is done or is cleaning up, no need to signal + self.__logger.debug( + "signal '{}' not set to '{}' because it is already closing".format( + typed_event.signal_name, self.process_details['name']), + ) + return None + if platform.system() == 'Windows' and typed_event.signal_name == 'SIGINT': + # TODO(wjwwood): remove this when/if SIGINT is fixed on Windows + self.__logger.warning( + "'SIGINT' sent to process[{}] not supported on Windows, escalating to 'SIGTERM'" + .format(self.process_details['name']), + ) + typed_event = SignalProcess( + signal_number=signal.SIGTERM, + process_matcher=lambda process: True) + self.__logger.info("sending signal '{}' to process[{}]".format( + typed_event.signal_name, self.process_details['name'] + )) + try: + if typed_event.signal_name == 'SIGKILL': + self._subprocess_transport.kill() # works on both Windows and POSIX + return None + self._subprocess_transport.send_signal(typed_event.signal) + return None + except ProcessLookupError: + self.__logger.debug( + "signal '{}' not sent to '{}' because it has closed already".format( + typed_event.signal_name, self.process_details['name'] + ) + ) + + def __on_process_stdin( + self, + event: ProcessIO + ) -> Optional[SomeEntitiesType]: + self.__logger.warning( + "in ExecuteProcess('{}').__on_process_stdin_event()".format(id(self)), + ) + cast(ProcessStdin, event) + return None + + def __on_process_output( + self, event: ProcessIO, buffer: io.TextIOBase, logger: logging.Logger + ) -> None: + to_write = event.text.decode(errors='replace') + if buffer.closed: + # buffer was probably closed by __flush_buffers on shutdown. Output without + # buffering. + logger.info( + self.__output_format.format(line=to_write, this=self) + ) + else: + buffer.write(to_write) + buffer.seek(0) + last_line = None + for line in buffer: + if line.endswith(os.linesep): + logger.info( + self.__output_format.format(line=line[:-len(os.linesep)], this=self) + ) + else: + last_line = line + break + buffer.seek(0) + buffer.truncate(0) + if last_line is not None: + buffer.write(last_line) + + def __flush_buffers(self, event, context): + line = self.__stdout_buffer.getvalue() + if line != '': + self.__stdout_logger.info( + self.__output_format.format(line=line, this=self) + ) + + line = self.__stderr_buffer.getvalue() + if line != '': + self.__stderr_logger.info( + self.__output_format.format(line=line, this=self) + ) + + # the respawned process needs to reuse these StringIO resources, + # close them only after receiving the shutdown + if self.__shutdown_future is None or self.__shutdown_future.done(): + self.__stdout_buffer.close() + self.__stderr_buffer.close() + else: + self.__stdout_buffer.seek(0) + self.__stdout_buffer.truncate(0) + self.__stderr_buffer.seek(0) + self.__stderr_buffer.truncate(0) + + def __on_process_output_cached( + self, event: ProcessIO, buffer, logger + ) -> None: + to_write = event.text.decode(errors='replace') + last_cursor = buffer.tell() + buffer.seek(0, os.SEEK_END) # go to end of buffer + buffer.write(to_write) + buffer.seek(last_cursor) + new_cursor = last_cursor + for line in buffer: + if not line.endswith(os.linesep): + break + new_cursor = buffer.tell() + logger.info( + self.__output_format.format(line=line[:-len(os.linesep)], this=self) + ) + buffer.seek(new_cursor) + + def __flush_cached_buffers(self, event, context): + for line in self.__stdout_buffer: + self.__stdout_logger.info( + self.__output_format.format(line=line, this=self) + ) + + for line in self.__stderr_buffer: + self.__stderr_logger.info( + self.__output_format.format(line=line, this=self) + ) + + def __on_shutdown(self, event: Event, context: LaunchContext) -> Optional[SomeEntitiesType]: + due_to_sigint = cast(Shutdown, event).due_to_sigint + return self._shutdown_process( + context, + send_sigint=not due_to_sigint or context.noninteractive, + ) + + def __get_shutdown_timer_actions(self) -> List[Action]: + base_msg = \ + "process[{}] failed to terminate '{}' seconds after receiving '{}', escalating to '{}'" + + def printer(context, msg, timeout_substitutions): + self.__logger.error(msg.format( + context.locals.process_name, + perform_substitutions(context, timeout_substitutions), + )) + + sigterm_timeout = self.__sigterm_timeout + sigkill_timeout = [PythonExpression( + ('float(', *self.__sigterm_timeout, ') + float(', *self.__sigkill_timeout, ')') + )] + # Setup a timer to send us a SIGTERM if we don't shutdown quickly. + self.__sigterm_timer = TimerAction( + period=sigterm_timeout, + actions=[ + OpaqueFunction( + function=printer, + args=(base_msg.format('{}', '{}', 'SIGINT', 'SIGTERM'), sigterm_timeout) + ), + EmitEvent(event=SignalProcess( + signal_number=signal.SIGTERM, + process_matcher=matches_action(self) + )), + ], + cancel_on_shutdown=False, + ) + # Setup a timer to send us a SIGKILL if we don't shutdown after SIGTERM. + self.__sigkill_timer = TimerAction( + period=sigkill_timeout, + actions=[ + OpaqueFunction( + function=printer, + args=(base_msg.format('{}', '{}', 'SIGTERM', 'SIGKILL'), sigkill_timeout) + ), + EmitEvent(event=SignalProcess( + signal_number='SIGKILL', + process_matcher=matches_action(self) + )) + ], + cancel_on_shutdown=False, + ) + return [ + cast(Action, self.__sigterm_timer), + cast(Action, self.__sigkill_timer), + ] + + def __get_sigint_event(self): + return EmitEvent(event=SignalProcess( + signal_number=signal.SIGINT, + process_matcher=matches_action(self), + )) + + def __cleanup(self): + # Cancel any pending timers we started. + if self.__sigterm_timer is not None: + self.__sigterm_timer.cancel() + if self.__sigkill_timer is not None: + self.__sigkill_timer.cancel() + # Close subprocess transport if any. + if self._subprocess_transport is not None: + self._subprocess_transport.close() + # Signal that we're done to the launch system. + self.__completed_future.set_result(None) + + class __ProcessProtocol(AsyncSubprocessProtocol): + def __init__( + self, + action: 'ExecuteLocal', + context: LaunchContext, + process_event_args: Dict, + **kwargs + ) -> None: + super().__init__(**kwargs) + self.__context = context + self.__process_event_args = process_event_args + self.__logger = launch.logging.get_logger(process_event_args['name']) + + def connection_made(self, transport): + self.__logger.info( + 'process started with pid [{}]'.format(transport.get_pid()), + ) + super().connection_made(transport) + self.__process_event_args['pid'] = transport.get_pid() + + def on_stdout_received(self, data: bytes) -> None: + self.__context.emit_event_sync(ProcessStdout(text=data, **self.__process_event_args)) + + def on_stderr_received(self, data: bytes) -> None: + self.__context.emit_event_sync(ProcessStderr(text=data, **self.__process_event_args)) + + async def __execute_process(self, context: LaunchContext) -> None: + process_event_args = self.__process_event_args + if process_event_args is None: + raise RuntimeError('process_event_args unexpectedly None') + + cmd = process_event_args['cmd'] + cwd = process_event_args['cwd'] + env = process_event_args['env'] + if self.__log_cmd: + self.__logger.info("process details: cmd='{}', cwd='{}', custom_env?={}".format( + ' '.join(filter(lambda part: part.strip(), cmd)), + cwd, + 'True' if env is not None else 'False' + )) + + emulate_tty = self.__emulate_tty + if 'emulate_tty' in context.launch_configurations: + emulate_tty = evaluate_condition_expression( + context, + normalize_to_list_of_substitutions( + context.launch_configurations['emulate_tty'] + ), + ) + + try: + transport, self._subprocess_protocol = await async_execute_process( + lambda **kwargs: self.__ProcessProtocol( + self, context, process_event_args, **kwargs + ), + cmd=cmd, + cwd=cwd, + env=env, + shell=self.__shell, + emulate_tty=emulate_tty, + stderr_to_stdout=False, + ) + except Exception: + self.__logger.error('exception occurred while executing process:\n{}'.format( + traceback.format_exc() + )) + self.__cleanup() + return + + pid = transport.get_pid() + self._subprocess_transport = transport + + await context.emit_event(ProcessStarted(**process_event_args)) + + returncode = await self._subprocess_protocol.complete + if returncode == 0: + self.__logger.info('process has finished cleanly [pid {}]'.format(pid)) + else: + self.__logger.error("process has died [pid {}, exit code {}, cmd '{}'].".format( + pid, returncode, ' '.join(filter(lambda part: part.strip(), cmd)) + )) + await context.emit_event( + ProcessExited(returncode=returncode, **process_event_args) + ) + # respawn the process if necessary + if not context.is_shutdown\ + and self.__shutdown_future is not None\ + and not self.__shutdown_future.done()\ + and self.__respawn and \ + (self.__respawn_max_retries < 0 or + self.__respawn_retries < self.__respawn_max_retries): + # Increase the respawn_retries counter + self.__respawn_retries += 1 + if self.__respawn_delay is not None and self.__respawn_delay > 0.0: + # wait for a timeout(`self.__respawn_delay`) to respawn the process + # and handle shutdown event with future(`self.__shutdown_future`) + # to make sure `ros2 launch` exit in time + await asyncio.wait( + (self.__shutdown_future,), + timeout=self.__respawn_delay + ) + if not self.__shutdown_future.done(): + context.asyncio_loop.create_task(self.__execute_process(context)) + return + self.__cleanup() + + def prepare(self, context: LaunchContext): + """Prepare the action for execution.""" + self.__process_description.prepare(context, self) + + # store packed kwargs for all ProcessEvent based events + self.__process_event_args = { + 'action': self, + 'name': self.__process_description.final_name, + 'cmd': self.__process_description.final_cmd, + 'cwd': self.__process_description.final_cwd, + 'env': self.__process_description.final_env, + # pid is added to the dictionary in the connection_made() method of the protocol. + } + + self.__respawn = cast(bool, perform_typed_substitution(context, self.__respawn, bool)) + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """ + Execute the action. + + This does the following: + - register an event handler for the shutdown process event + - register an event handler for the signal process event + - register an event handler for the stdin event + - configures logging for the IO process event + - create a task for the coroutine that monitors the process + """ + self.prepare(context) + name = self.__process_description.final_name + + if self.__executed: + raise RuntimeError( + f"ExecuteLocal action '{name}': executed more than once: {self.describe()}" + ) + self.__executed = True + + if context.is_shutdown: + # If shutdown starts before execution can start, don't start execution. + return None + + if self.__cached_output: + on_output_method = self.__on_process_output_cached + flush_buffers_method = self.__flush_cached_buffers + else: + on_output_method = self.__on_process_output + flush_buffers_method = self.__flush_buffers + + event_handlers = [ + EventHandler( + matcher=lambda event: is_a_subclass(event, ShutdownProcess), + entities=OpaqueFunction(function=self.__on_shutdown_process_event), + ), + EventHandler( + matcher=lambda event: is_a_subclass(event, SignalProcess), + entities=OpaqueFunction(function=self.__on_signal_process_event), + ), + OnProcessIO( + target_action=self, + on_stdin=self.__on_process_stdin, + on_stdout=lambda event: on_output_method( + event, self.__stdout_buffer, self.__stdout_logger), + on_stderr=lambda event: on_output_method( + event, self.__stderr_buffer, self.__stderr_logger), + ), + OnShutdown( + on_shutdown=self.__on_shutdown, + ), + OnProcessExit( + target_action=self, + # TODO: This is also a little strange, OnProcessExit shouldn't ever be able to + # take a None for the callable, but this seems to be the default case? + on_exit=self.__on_exit, # type: ignore + ), + OnProcessExit( + target_action=self, + on_exit=flush_buffers_method, + ), + ] + for event_handler in event_handlers: + context.register_event_handler(event_handler) + + try: + self.__completed_future = context.asyncio_loop.create_future() + self.__shutdown_future = context.asyncio_loop.create_future() + self.__logger = launch.logging.get_logger(name) + if not isinstance(self.__output, dict): + self.__stdout_logger, self.__stderr_logger = \ + launch.logging.get_output_loggers( + name, perform_substitutions(context, self.__output) + ) + else: + self.__stdout_logger, self.__stderr_logger = \ + launch.logging.get_output_loggers(name, self.__output) + context.asyncio_loop.create_task(self.__execute_process(context)) + except Exception: + for event_handler in event_handlers: + context.unregister_event_handler(event_handler) + raise + return None + + def get_asyncio_future(self) -> Optional[asyncio.Future]: + """Return an asyncio Future, used to let the launch system know when we're done.""" + return self.__completed_future + + def get_stdout(self): + """ + Get cached stdout. + + :raises RuntimeError: if cached_output is false. + """ + if not self.__cached_output: + raise RuntimeError( + 'cached output must be true to be able to get stdout,' + f" proc '{self.__process_description.name}'") + return self.__stdout_buffer.getvalue() + + def get_stderr(self): + """ + Get cached stdout. + + :raises RuntimeError: if cached_output is false. + """ + if not self.__cached_output: + raise RuntimeError( + 'cached output must be true to be able to get stderr, proc' + f" '{self.__process_description.name}'") + return self.__stderr_buffer.getvalue() + + @property + def return_code(self): + """Get the process return code, None if it hasn't finished.""" + if self._subprocess_transport is None: + return None + return self._subprocess_transport.get_returncode() diff --git a/src/lib/launch/launch/launch/actions/execute_process.py b/src/lib/launch/launch/launch/actions/execute_process.py new file mode 100644 index 0000000000..be06a06877 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/execute_process.py @@ -0,0 +1,450 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the ExecuteProcess action.""" + +import shlex +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional +from typing import Text + +from .execute_local import ExecuteLocal +from .shutdown_action import Shutdown +from ..descriptions import Executable +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..some_substitutions_type import SomeSubstitutionsType + +from ..substitution import Substitution +from ..substitutions import TextSubstitution + + +@expose_action('executable') +class ExecuteProcess(ExecuteLocal): + """ + Action that begins executing a process and sets up event handlers for it. + + Simple example: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... ExecuteProcess( + ... cmd=['ls', '-las'], + ... name='my_ls_process', # this is optional + ... output='both', + ... ), + ... ]) + + .. code-block:: xml + + + + + + Substitutions in the command: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument(name='file_path', description='file path to cat'), + ... ExecuteProcess( + ... # each item of the command arguments' list can be: + ... # a string ('cat'), + ... # a substitution (`LaunchConfiguration('file_path')`), + ... # or a list of string/substitutions + ... # (`[LaunchConfiguration('directory'), '/file.txt']`) + ... cmd=['cat', LaunchConfiguration('file_path')], + ... ), + ... ]) + + .. code-block:: xml + + + + + + + Optional cli argument: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument(name='open_gui', default_value='False'), + ... ExecuteProcess( + ... cmd=['my_cmd', '--open-gui'], + ... condition=IfCondition(LaunchConfiguration('open_gui')), + ... ), + ... ExecuteProcess( + ... cmd=['my_cmd'], + ... condition=UnlessCondition(LaunchConfiguration('open_gui')), + ... ), + ... ]) + + .. code-block:: xml + + + + + + + + Environment variables: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... ExecuteProcess( + ... cmd=['my_cmd'], + ... additional_env={'env_variable': 'env_var_value'}, + ... ), + ... ]) + + .. code-block:: xml + + + + + + + """ + + def __init__( + self, + *, + cmd: Iterable[SomeSubstitutionsType], + prefix: Optional[SomeSubstitutionsType] = None, + name: Optional[SomeSubstitutionsType] = None, + cwd: Optional[SomeSubstitutionsType] = None, + env: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + additional_env: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + **kwargs + ) -> None: + """ + Construct an ExecuteProcess action. + + Many arguments are passed eventually to :class:`subprocess.Popen`, so + see the documentation for the class for additional details. + + This action, once executed, registers several event handlers for + various process related events and will also emit events asynchronously + when certain events related to the process occur. + + Handled events include: + + - launch.events.process.ShutdownProcess: + + - begins standard shutdown procedure for a running executable + + - launch.events.process.SignalProcess: + + - passes the signal provided by the event to the running process + + - launch.events.process.ProcessStdin: + + - passes the text provided by the event to the stdin of the process + + - launch.events.Shutdown: + + - same as ShutdownProcess + + Emitted events include: + + - launch.events.process.ProcessStarted: + + - emitted when the process starts + + - launch.events.process.ProcessExited: + + - emitted when the process exits + - event contains return code + + - launch.events.process.ProcessStdout and launch.events.process.ProcessStderr: + + - emitted when the process produces data on either the stdout or stderr pipes + - event contains the data from the pipe + + Note that output is just stored in this class and has to be properly + implemented by the event handlers for the process's ProcessIO events. + + :param: cmd a list where the first item is the executable and the rest + are arguments to the executable, each item may be a string or a + list of strings and Substitutions to be resolved at runtime + :param: cwd the directory in which to run the executable + :param: name the label used to represent the process, as a string or a + Substitution to be resolved at runtime, defaults to the basename of + the executable + :param: env dictionary of environment variables to be used, starting from + a clean environment. If 'None', the current environment is used. + :param: additional_env dictionary of environment variables to be added. + If 'env' was None, they are added to the current environment. + If not, 'env' is updated with additional_env. + :param: shell if True, a shell is used to execute the cmd + :param: sigterm_timeout time until shutdown should escalate to SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigterm_timeout' + :param: sigkill_timeout time until escalating to SIGKILL after SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigkill_timeout' + :param: emulate_tty emulate a tty (terminal), defaults to False, but can + be overridden with the LaunchConfiguration called 'emulate_tty', + the value of which is evaluated as true or false according to + :py:func:`evaluate_condition_expression`. + Throws :py:exc:`InvalidConditionExpressionError` if the + 'emulate_tty' configuration does not represent a boolean. + :param: prefix a set of commands/arguments to precede the cmd, used for + things like gdb/valgrind and defaults to the LaunchConfiguration + called 'launch-prefix'. Note that a non-default prefix provided in + a launch file will override the prefix provided via the `launch-prefix` + launch configuration regardless of whether the `launch-prefix-filter` launch + configuration is provided. + :param: output configuration for process output logging. Defaults to 'log' + i.e. log both stdout and stderr to launch main log file and stderr to + the screen. + Overridden externally by the OVERRIDE_LAUNCH_PROCESS_OUTPUT envvar value. + See `launch.logging.get_output_loggers()` documentation for further + reference on all available options. + :param: output_format for logging each output line, supporting `str.format()` + substitutions with the following keys in scope: `line` to reference the raw + output line and `this` to reference this action instance. + :param: log_cmd if True, prints the final cmd before executing the + process, which is useful for debugging when substitutions are + involved. + :param: cached_output if `True`, both stdout and stderr will be cached. + Use get_stdout() and get_stderr() to read the buffered output. + :param: on_exit list of actions to execute upon process exit. + :param: respawn if 'True', relaunch the process that abnormally died. + Defaults to 'False'. + :param: respawn_delay a delay time to relaunch the died process if respawn is 'True'. + :param: respawn_max_retries number of times to respawn the process if respawn is 'True'. + A negative value will respawn an infinite number of times (default behavior). + """ + executable = Executable(cmd=cmd, prefix=prefix, name=name, cwd=cwd, env=env, + additional_env=additional_env) + super().__init__(process_description=executable, **kwargs) + + @classmethod + def _parse_cmdline( + cls, + cmd: Text, + parser: Parser + ) -> List[SomeSubstitutionsType]: + """ + Parse text apt for command line execution. + + :param: cmd a space (' ') delimited command line arguments list. + All found `TextSubstitution` items are split and added to the + list again as a `TextSubstitution`. + :returns: a list of command line arguments. + """ + result_args = [] + arg: List[Substitution] = [] + + def _append_arg(): + nonlocal arg + result_args.append(arg) + arg = [] + for sub in parser.parse_substitution(cmd): + if isinstance(sub, TextSubstitution): + tokens = shlex.split(sub.text) + if not tokens: + # String with just spaces. + # Appending args allow splitting two substitutions + # separated by a space. + # e.g.: `$(subst1 asd) $(subst2 bsd)` will be two separate arguments. + _append_arg() + continue + if sub.text[0].isspace(): + # Needed for splitting from the previous argument + # e.g.: `$(find-exec bsd) asd` + # It splits `asd` from the path of `bsd` executable. + if len(arg) != 0: + _append_arg() + arg.append(TextSubstitution(text=tokens[0])) + if len(tokens) > 1: + # Needed to split the first argument when more than one token. + # e.g. `$(find-pkg-prefix csd)/asd bsd` + # will split `$(find-pkg-prefix csd)/asd` from `bsd`. + _append_arg() + arg.append(TextSubstitution(text=tokens[-1])) + if len(tokens) > 2: + # If there are more than two tokens, just add all the middle tokens to + # `result_args`. + # e.g. `$(find-pkg-prefix csd)/asd bsd dsd xsd` + # 'bsd' 'dsd' will be added. + result_args.extend([TextSubstitution(text=x)] for x in tokens[1:-1]) + if sub.text[-1].isspace(): + # Allows splitting from next argument. + # e.g. `exec $(find-some-file)` + # Will split `exec` argument from the result of `find-some-file` substitution. + _append_arg() + else: + arg.append(sub) + if arg: + result_args.append(arg) + return result_args + + @classmethod + def parse( + cls, + entity: Entity, + parser: Parser, + ignore: Optional[List[str]] = None + ): + """ + Return the `ExecuteProcess` action and kwargs for constructing it. + + :param: ignore A list of arguments that should be ignored while parsing. + Intended for code reuse in derived classes (e.g.: launch_ros.actions.Node). + """ + _, kwargs = super().parse(entity, parser) + + if ignore is None: + ignore = [] + + if 'cmd' not in ignore: + kwargs['cmd'] = cls._parse_cmdline(entity.get_attr('cmd'), parser) + + if 'cwd' not in ignore: + cwd = entity.get_attr('cwd', optional=True) + if cwd is not None: + kwargs['cwd'] = parser.parse_substitution(cwd) + + if 'name' not in ignore: + name = entity.get_attr('name', optional=True) + if name is not None: + kwargs['name'] = parser.parse_substitution(name) + + if 'on_exit' not in ignore: + on_exit = entity.get_attr('on_exit', optional=True) + if on_exit is not None: + if on_exit == 'shutdown': + kwargs['on_exit'] = [Shutdown()] + else: + raise ValueError( + 'Attribute on_exit of Entity node expected to be shutdown but got `{}`' + 'Other on_exit actions not yet supported'.format(on_exit)) + + if 'prefix' not in ignore: + prefix = entity.get_attr('launch-prefix', optional=True) + if prefix is not None: + kwargs['prefix'] = parser.parse_substitution(prefix) + + if 'output' not in ignore: + output = entity.get_attr('output', optional=True) + if output is not None: + kwargs['output'] = parser.parse_substitution(output) + + if 'respawn' not in ignore: + respawn = entity.get_attr('respawn', optional=True) + if respawn is not None: + kwargs['respawn'] = parser.parse_substitution(respawn) + + if 'respawn_max_retries' not in ignore: + respawn_max_retries = entity.get_attr('respawn_max_retries', data_type=int, + optional=True) + if respawn_max_retries is not None: + kwargs['respawn_max_retries'] = respawn_max_retries + + if 'respawn_delay' not in ignore: + respawn_delay = entity.get_attr('respawn_delay', data_type=float, optional=True) + if respawn_delay is not None: + if respawn_delay < 0.0: + raise ValueError( + 'Attribute respawn_delay of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(respawn_delay) + ) + kwargs['respawn_delay'] = respawn_delay + + if 'sigkill_timeout' not in ignore: + sigkill_timeout = entity.get_attr('sigkill_timeout', data_type=float, optional=True) + if sigkill_timeout is not None: + if sigkill_timeout < 0.0: + raise ValueError( + 'Attribute sigkill_timeout of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(sigkill_timeout) + ) + kwargs['sigkill_timeout'] = str(sigkill_timeout) + + if 'sigterm_timeout' not in ignore: + sigterm_timeout = entity.get_attr('sigterm_timeout', data_type=float, optional=True) + if sigterm_timeout is not None: + if sigterm_timeout < 0.0: + raise ValueError( + 'Attribute sigterm_timeout of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(sigterm_timeout) + ) + kwargs['sigterm_timeout'] = str(sigterm_timeout) + + if 'shell' not in ignore: + shell = entity.get_attr('shell', data_type=bool, optional=True) + if shell is not None: + kwargs['shell'] = shell + + if 'emulate_tty' not in ignore: + emulate_tty = entity.get_attr('emulate_tty', data_type=bool, optional=True) + if emulate_tty is not None: + kwargs['emulate_tty'] = emulate_tty + + if 'additional_env' not in ignore: + # Conditions won't be allowed in the `env` tag. + # If that feature is needed, `set_environment_variable` and + # `unset_environment_variable` actions should be used. + env = entity.get_attr('env', data_type=List[Entity], optional=True) + if env is not None: + kwargs['additional_env'] = { + tuple(parser.parse_substitution(e.get_attr('name'))): + parser.parse_substitution(e.get_attr('value')) for e in env + } + for e in env: + e.assert_entity_completely_parsed() + return cls, kwargs + + @property + def name(self): + """Getter for name.""" + if self.process_description.final_name is not None: + return self.process_description.final_name + return self.process_description.name + + @property + def cmd(self): + """Getter for cmd.""" + if self.process_description.final_cmd is not None: + return self.process_description.final_cmd + return self.process_description.cmd + + @property + def cwd(self): + """Getter for cwd.""" + if self.process_description.final_cwd is not None: + return self.process_description.final_cwd + return self.process_description.cwd + + @property + def env(self): + """Getter for env.""" + if self.process_description.final_env is not None: + return self.process_description.final_env + return self.process_description.env + + @property + def additional_env(self): + """Getter for additional_env.""" + return self.process_description.additional_env diff --git a/src/lib/launch/launch/launch/actions/group_action.py b/src/lib/launch/launch/launch/actions/group_action.py new file mode 100644 index 0000000000..81b7b533d4 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/group_action.py @@ -0,0 +1,146 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the GroupAction action.""" + +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional + +from .pop_environment import PopEnvironment +from .pop_launch_configurations import PopLaunchConfigurations +from .push_environment import PushEnvironment +from .push_launch_configurations import PushLaunchConfigurations +from .reset_environment import ResetEnvironment +from .reset_launch_configurations import ResetLaunchConfigurations +from .set_launch_configuration import SetLaunchConfiguration +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..launch_description_entity import LaunchDescriptionEntity +from ..some_substitutions_type import SomeSubstitutionsType + + +@expose_action('group') +class GroupAction(Action): + """ + Action that yields other actions. + + This action is used to nest other actions without including a separate + launch description, while also optionally having a condition (like all + other actions), scoping and forwarding launch configurations and + environment variables, and/or declaring launch configurations for just the + group and its yielded actions. + + When scoped=True, changes to launch configurations and environment + variables are limited to the scope of actions in the group action. + + When scoped=True and forwarding=True, all existing launch configurations + and environment variables are available in the scoped context. + + When scoped=True and forwarding=False, all existing launch configurations + and environment variables are removed from the scoped context. + + Any launch configuration defined in the launch_configurations dictionary + will be set in the current context. + When scoped=False these configurations will persist even after the + GroupAction has completed. + When scoped=True these configurations will only be available to actions in + the GroupAction. + When scoped=True and forwarding=False, the launch_configurations dictionary + is evaluated before clearing, and then re-set in the cleared scoped context. + """ + + def __init__( + self, + actions: Iterable[Action], + *, + scoped: bool = True, + forwarding: bool = True, + launch_configurations: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + **left_over_kwargs + ) -> None: + """Create a GroupAction.""" + super().__init__(**left_over_kwargs) + self.__actions = actions + self.__scoped = scoped + self.__forwarding = forwarding + if launch_configurations is not None: + self.__launch_configurations = launch_configurations + else: + self.__launch_configurations = {} + self.__actions_to_return: Optional[List] = None + + @classmethod + def parse(cls, entity: Entity, parser: Parser): + """Return `GroupAction` action and kwargs for constructing it.""" + _, kwargs = super().parse(entity, parser) + scoped = entity.get_attr('scoped', data_type=bool, optional=True) + forwarding = entity.get_attr('forwarding', data_type=bool, optional=True) + keeps = entity.get_attr('keep', data_type=List[Entity], optional=True) + if scoped is not None: + kwargs['scoped'] = scoped + if forwarding is not None: + kwargs['forwarding'] = forwarding + if keeps is not None: + kwargs['launch_configurations'] = { + tuple(parser.parse_substitution(e.get_attr('name'))): + parser.parse_substitution(e.get_attr('value')) for e in keeps + } + for e in keeps: + e.assert_entity_completely_parsed() + kwargs['actions'] = [parser.parse_action(e) for e in entity.children + if e.type_name != 'keep'] + return cls, kwargs + + def get_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Return subentities.""" + if self.__actions_to_return is None: + self.__actions_to_return = list(self.__actions) + configuration_sets = [ + SetLaunchConfiguration(k, v) for k, v in self.__launch_configurations.items() + ] + if self.__scoped: + if self.__forwarding: + self.__actions_to_return = [ + PushLaunchConfigurations(), + PushEnvironment(), + *configuration_sets, + *self.__actions_to_return, + PopEnvironment(), + PopLaunchConfigurations() + ] + else: + self.__actions_to_return = [ + PushLaunchConfigurations(), + PushEnvironment(), + ResetEnvironment(), + ResetLaunchConfigurations(self.__launch_configurations), + *self.__actions_to_return, + PopEnvironment(), + PopLaunchConfigurations() + ] + else: + self.__actions_to_return = [ + *configuration_sets, + *self.__actions_to_return + ] + return self.__actions_to_return + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """Execute the action.""" + return self.get_sub_entities() diff --git a/src/lib/launch/launch/launch/actions/include_launch_description.py b/src/lib/launch/launch/launch/actions/include_launch_description.py new file mode 100644 index 0000000000..449f4c3a9c --- /dev/null +++ b/src/lib/launch/launch/launch/actions/include_launch_description.py @@ -0,0 +1,243 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the IncludeLaunchDescription action.""" + +import os +from typing import Iterable, Sequence +from typing import List +from typing import Optional +from typing import Tuple +from typing import Union + +import launch.logging + +from .set_launch_configuration import SetLaunchConfiguration +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..launch_description_entity import LaunchDescriptionEntity +from ..launch_description_source import LaunchDescriptionSource +from ..launch_description_sources import AnyLaunchDescriptionSource +from ..some_substitutions_type import SomeSubstitutionsType +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions + + +@expose_action('include') +class IncludeLaunchDescription(Action): + """ + Action that includes a launch description source and yields its entities when visited. + + It is possible to pass arguments to the launch description, which it + declared with the :py:class:`launch.actions.DeclareLaunchArgument` action. + + If any given arguments do not match the name of any declared launch + arguments, then they will still be set as Launch Configurations using the + :py:class:`launch.actions.SetLaunchConfiguration` action. + This is done because it's not always possible to detect all instances of + the declare launch argument class in the given launch description. + + On the other side, an error will sometimes be raised if the given launch + description declares a launch argument and its value is not provided to + this action. + It will only produce this error, however, if the declared launch argument + is unconditional (sometimes the action that declares the launch argument + will only be visited in certain circumstances) and if it does not have a + default value on which to fall back. + + Conditionally included launch arguments that do not have a default value + will eventually raise an error if this best effort argument checking is + unable to see an unsatisfied argument ahead of time. + + For example, to include ``my_pkg``'s ``other_launch.py`` and set launch arguments for it: + + .. code-block:: python + + def generate_launch_description(): + return ([ + SetLaunchConfiguration('arg1', 'value1'), + IncludeLaunchDescription( + AnyLaunchDescriptionSource([ + PathJoinSubstitution([ + FindPackageShare('my_pkg'), + 'launch', + 'other_launch.py', + ]), + ]), + launch_arguments={ + 'other_arg1': LaunchConfiguration('arg1'), + 'other_arg2': 'value2', + }.items(), + ), + ]) + + .. code-block:: xml + + + + + + + + + + .. code-block:: yaml + + launch: + - let: + name: 'arg1' + value: 'value1' + - include: + file: '$(find-pkg-share my_pkg)/launch/other_launch.py' + let: + - name: 'other_arg1' + value: '$(var arg1)' + - name: 'other_arg2' + value: 'value2' + + .. note:: + + While frontends currently support both ``let`` and ``arg`` for launch arguments, they are + both converted into ``SetLaunchConfiguration`` actions (``let``). The same launch argument + should not be defined using both ``let`` and ``arg``. + """ + + def __init__( + self, + launch_description_source: Union[LaunchDescriptionSource, SomeSubstitutionsType], + *, + launch_arguments: Optional[ + Iterable[Tuple[SomeSubstitutionsType, SomeSubstitutionsType]] + ] = None, + **kwargs + ) -> None: + """Create an IncludeLaunchDescription action.""" + super().__init__(**kwargs) + if not isinstance(launch_description_source, LaunchDescriptionSource): + launch_description_source = AnyLaunchDescriptionSource(launch_description_source) + self.__launch_description_source = launch_description_source + self.__launch_arguments = () if launch_arguments is None else tuple(launch_arguments) + self.__logger = launch.logging.get_logger(__name__) + + @classmethod + def parse(cls, entity: Entity, parser: Parser): + """Return `IncludeLaunchDescription` action and kwargs for constructing it.""" + _, kwargs = super().parse(entity, parser) + file_path = parser.parse_substitution(entity.get_attr('file')) + kwargs['launch_description_source'] = file_path + args = [] + args_arg = entity.get_attr('arg', data_type=List[Entity], optional=True) + if args_arg is not None: + args.extend(args_arg) + args_let = entity.get_attr('let', data_type=List[Entity], optional=True) + if args_let is not None: + args.extend(args_let) + if args: + kwargs['launch_arguments'] = [ + ( + parser.parse_substitution(e.get_attr('name')), + parser.parse_substitution(e.get_attr('value')) + ) + for e in args + ] + for e in args: + e.assert_entity_completely_parsed() + return cls, kwargs + + @property + def launch_description_source(self) -> LaunchDescriptionSource: + """Getter for self.__launch_description_source.""" + return self.__launch_description_source + + @property + def launch_arguments(self) -> Sequence[Tuple[SomeSubstitutionsType, SomeSubstitutionsType]]: + """Getter for self.__launch_arguments.""" + return self.__launch_arguments + + def _get_launch_file(self): + return os.path.abspath(self.__launch_description_source.location) + + def _get_launch_file_directory(self): + launch_file_location = self._get_launch_file() + if os.path.exists(launch_file_location): + launch_file_location = os.path.dirname(launch_file_location) + else: + # If the location does not exist, then it's likely set to '