From 7f898875083bed3f3380680bc80dc2fc3c974479 Mon Sep 17 00:00:00 2001 From: Mihai Dinculescu Date: Sun, 9 Oct 2022 09:38:53 +0100 Subject: [PATCH] Proc macro preparation --- Cargo.lock | 18 + Cargo.toml | 24 +- README.md | 2 +- examples/Cargo.toml | 17 + examples/{ => src}/basic.rs | 7 +- examples/{logging.rs => src/lib.rs} | 3 - simconnect-sdk-derive/Cargo.toml | 15 + simconnect-sdk-derive/src/lib.rs | 7 + simconnect-sdk/Cargo.lock | 578 ++++++++++++++++++ simconnect-sdk/Cargo.toml | 16 + build.rs => simconnect-sdk/build.rs | 6 +- .../ffi}/include/SimConnect.h | 0 .../ffi}/lib/SimConnect.lib | Bin {ffi => simconnect-sdk/ffi}/version.txt | 0 {src => simconnect-sdk/src}/bindings.rs | 0 .../src}/domain/airport_data.rs | 0 .../src}/domain/condition.rs | 0 .../src}/domain/data_type.rs | 0 {src => simconnect-sdk/src}/domain/event.rs | 0 {src => simconnect-sdk/src}/domain/group.rs | 0 {src => simconnect-sdk/src}/domain/mod.rs | 0 .../src}/domain/notification.rs | 4 +- {src => simconnect-sdk/src}/domain/period.rs | 0 {src => simconnect-sdk/src}/errors.rs | 0 {src => simconnect-sdk/src}/helpers.rs | 0 {src => simconnect-sdk/src}/lib.rs | 7 +- {src => simconnect-sdk/src}/macros.rs | 0 {src => simconnect-sdk/src}/simconnect.rs | 4 +- .../src/simconnect_object_ext.rs | 2 +- 29 files changed, 674 insertions(+), 36 deletions(-) create mode 100644 examples/Cargo.toml rename examples/{ => src}/basic.rs (94%) rename examples/{logging.rs => src/lib.rs} (93%) create mode 100644 simconnect-sdk-derive/Cargo.toml create mode 100644 simconnect-sdk-derive/src/lib.rs create mode 100644 simconnect-sdk/Cargo.lock create mode 100644 simconnect-sdk/Cargo.toml rename build.rs => simconnect-sdk/build.rs (88%) rename {ffi => simconnect-sdk/ffi}/include/SimConnect.h (100%) rename {ffi => simconnect-sdk/ffi}/lib/SimConnect.lib (100%) rename {ffi => simconnect-sdk/ffi}/version.txt (100%) rename {src => simconnect-sdk/src}/bindings.rs (100%) rename {src => simconnect-sdk/src}/domain/airport_data.rs (100%) rename {src => simconnect-sdk/src}/domain/condition.rs (100%) rename {src => simconnect-sdk/src}/domain/data_type.rs (100%) rename {src => simconnect-sdk/src}/domain/event.rs (100%) rename {src => simconnect-sdk/src}/domain/group.rs (100%) rename {src => simconnect-sdk/src}/domain/mod.rs (100%) rename {src => simconnect-sdk/src}/domain/notification.rs (81%) rename {src => simconnect-sdk/src}/domain/period.rs (100%) rename {src => simconnect-sdk/src}/errors.rs (100%) rename {src => simconnect-sdk/src}/helpers.rs (100%) rename {src => simconnect-sdk/src}/lib.rs (59%) rename {src => simconnect-sdk/src}/macros.rs (100%) rename {src => simconnect-sdk/src}/simconnect.rs (98%) rename src/simconnect_object.rs => simconnect-sdk/src/simconnect_object_ext.rs (64%) diff --git a/Cargo.lock b/Cargo.lock index d85bef0..c137029 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -380,8 +380,26 @@ version = "0.1.0" dependencies = [ "bindgen", "num_enum", + "simconnect-sdk-derive", "thiserror", "tracing", +] + +[[package]] +name = "simconnect-sdk-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "simconnect-sdk-examples" +version = "0.1.0" +dependencies = [ + "simconnect-sdk", + "tracing", "tracing-subscriber", ] diff --git a/Cargo.toml b/Cargo.toml index 702575c..bb9f3a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,18 +1,6 @@ -[package] -name = "simconnect-sdk" -version = "0.1.0" -authors = ["Mihai Dinculescu "] -edition = "2021" -description = "SimConnect SDK for Rust" -license = "MIT" - -[build-dependencies] -bindgen = "0.60" - -[dependencies] -num_enum = "0.5" -tracing = "0.1" -thiserror = "1.0" - -[dev-dependencies] -tracing-subscriber = { version = "0.3", features = [ "env-filter" ] } +[workspace] +members = [ + "examples", + "simconnect-sdk", + "simconnect-sdk-derive", +] diff --git a/README.md b/README.md index 6f5f3b9..44d6d64 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,5 @@ ```bash git clone git@github.com:mihai-dinculescu/simconnect-sdk.git cd simconnect-sdk -RUST_LOG=info cargo run --example basic +RUST_LOG=info cargo run --bin basic ``` diff --git a/examples/Cargo.toml b/examples/Cargo.toml new file mode 100644 index 0000000..c2fcf17 --- /dev/null +++ b/examples/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "simconnect-sdk-examples" +version = "0.1.0" +authors = ["Mihai Dinculescu "] +edition = "2021" +description = "SimConnect SDK Examples" +license = "MIT" + +[[bin]] +name = "basic" +path = "src/basic.rs" + +[dependencies] +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = [ "env-filter" ] } + +simconnect-sdk = { path = "../simconnect-sdk" } diff --git a/examples/basic.rs b/examples/src/basic.rs similarity index 94% rename from examples/basic.rs rename to examples/src/basic.rs index 293b328..2054db1 100644 --- a/examples/basic.rs +++ b/examples/src/basic.rs @@ -1,11 +1,10 @@ -use logging::setup_logging; use simconnect_sdk::{ ConditionEnum, DataType, Notification, NotificationData, PeriodEnum, SimConnect, SimConnectError, }; use tracing::{error, info}; -mod logging; +use simconnect_sdk_examples::setup_logging; #[derive(Debug, Clone)] pub struct GpsData { @@ -16,7 +15,7 @@ pub struct GpsData { pub gps_ground_speed: f64, } -impl simconnect_sdk::SimConnectObject for GpsData { +impl simconnect_sdk::SimConnectObjectExt for GpsData { fn register(client: &mut SimConnect, id: u32) -> Result<(), SimConnectError> { client.add_to_data_definition(id, "PLANE LATITUDE", "degrees", DataType::F64)?; client.add_to_data_definition(id, "PLANE LONGITUDE", "degrees", DataType::F64)?; @@ -47,7 +46,7 @@ pub struct OnGround { pub sim_on_ground: bool, } -impl simconnect_sdk::SimConnectObject for OnGround { +impl simconnect_sdk::SimConnectObjectExt for OnGround { fn register(client: &mut SimConnect, id: u32) -> Result<(), SimConnectError> { client.add_to_data_definition(id, "SIM ON GROUND", "bool", DataType::Bool)?; client.request_data_on_sim_object(id, PeriodEnum::Second, ConditionEnum::None)?; diff --git a/examples/logging.rs b/examples/src/lib.rs similarity index 93% rename from examples/logging.rs rename to examples/src/lib.rs index 36b7028..dee1f94 100644 --- a/examples/logging.rs +++ b/examples/src/lib.rs @@ -13,6 +13,3 @@ pub fn setup_logging() -> Result<(), Box> { Ok(()) } - -#[allow(dead_code)] -fn main() {} diff --git a/simconnect-sdk-derive/Cargo.toml b/simconnect-sdk-derive/Cargo.toml new file mode 100644 index 0000000..688e8ae --- /dev/null +++ b/simconnect-sdk-derive/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "simconnect-sdk-derive" +version = "0.1.0" +authors = ["Mihai Dinculescu "] +edition = "2021" +description = "Macros of SimConnect SDK for Rust" +license = "MIT" + +[lib] +proc-macro = true + +[dependencies] +proc-macro2 = "1.0" +quote = "1.0" +syn = "1.0" diff --git a/simconnect-sdk-derive/src/lib.rs b/simconnect-sdk-derive/src/lib.rs new file mode 100644 index 0000000..bc58ea8 --- /dev/null +++ b/simconnect-sdk-derive/src/lib.rs @@ -0,0 +1,7 @@ +extern crate proc_macro; +use proc_macro::TokenStream; + +#[proc_macro_derive(SimConnectObject, attributes(field))] +pub fn derive(_: TokenStream) -> TokenStream { + TokenStream::new() +} diff --git a/simconnect-sdk/Cargo.lock b/simconnect-sdk/Cargo.lock new file mode 100644 index 0000000..d85bef0 --- /dev/null +++ b/simconnect-sdk/Cargo.lock @@ -0,0 +1,578 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bindgen" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "clap", + "env_logger", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "which", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "atty", + "bitflags", + "clap_lex", + "indexmap", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "env_logger" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.134" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "once_cell" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "serde" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "simconnect-sdk" +version = "0.1.0" +dependencies = [ + "bindgen", + "num_enum", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "unicode-ident" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "which" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/simconnect-sdk/Cargo.toml b/simconnect-sdk/Cargo.toml new file mode 100644 index 0000000..bd3e4b2 --- /dev/null +++ b/simconnect-sdk/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "simconnect-sdk" +version = "0.1.0" +authors = ["Mihai Dinculescu "] +edition = "2021" +description = "SimConnect SDK for Rust" +license = "MIT" + +[build-dependencies] +bindgen = "0.60" + +[dependencies] +num_enum = "0.5" +tracing = "0.1" +thiserror = "1.0" +simconnect-sdk-derive = { path = "../simconnect-sdk-derive" } diff --git a/build.rs b/simconnect-sdk/build.rs similarity index 88% rename from build.rs rename to simconnect-sdk/build.rs index 4c3c185..5b601c3 100644 --- a/build.rs +++ b/simconnect-sdk/build.rs @@ -2,10 +2,10 @@ use std::env; use std::path::PathBuf; fn main() { - println!("cargo:rustc-link-search=ffi/lib"); + println!("cargo:rustc-link-search=simconnect-sdk/ffi/lib"); println!("cargo:rustc-link-lib=static=SimConnect"); - println!("cargo:rerun-if-changed=ffi/include/SimConnect.h"); - println!("cargo:rerun-if-changed=ffi/lib/SimConnect.lib"); + println!("cargo:rerun-if-changed=simconnect-sdk/ffi/include/SimConnect.h"); + println!("cargo:rerun-if-changed=simconnect-sdk/ffi/lib/SimConnect.lib"); let bindings = bindgen::Builder::default() .header("ffi/include/SimConnect.h") diff --git a/ffi/include/SimConnect.h b/simconnect-sdk/ffi/include/SimConnect.h similarity index 100% rename from ffi/include/SimConnect.h rename to simconnect-sdk/ffi/include/SimConnect.h diff --git a/ffi/lib/SimConnect.lib b/simconnect-sdk/ffi/lib/SimConnect.lib similarity index 100% rename from ffi/lib/SimConnect.lib rename to simconnect-sdk/ffi/lib/SimConnect.lib diff --git a/ffi/version.txt b/simconnect-sdk/ffi/version.txt similarity index 100% rename from ffi/version.txt rename to simconnect-sdk/ffi/version.txt diff --git a/src/bindings.rs b/simconnect-sdk/src/bindings.rs similarity index 100% rename from src/bindings.rs rename to simconnect-sdk/src/bindings.rs diff --git a/src/domain/airport_data.rs b/simconnect-sdk/src/domain/airport_data.rs similarity index 100% rename from src/domain/airport_data.rs rename to simconnect-sdk/src/domain/airport_data.rs diff --git a/src/domain/condition.rs b/simconnect-sdk/src/domain/condition.rs similarity index 100% rename from src/domain/condition.rs rename to simconnect-sdk/src/domain/condition.rs diff --git a/src/domain/data_type.rs b/simconnect-sdk/src/domain/data_type.rs similarity index 100% rename from src/domain/data_type.rs rename to simconnect-sdk/src/domain/data_type.rs diff --git a/src/domain/event.rs b/simconnect-sdk/src/domain/event.rs similarity index 100% rename from src/domain/event.rs rename to simconnect-sdk/src/domain/event.rs diff --git a/src/domain/group.rs b/simconnect-sdk/src/domain/group.rs similarity index 100% rename from src/domain/group.rs rename to simconnect-sdk/src/domain/group.rs diff --git a/src/domain/mod.rs b/simconnect-sdk/src/domain/mod.rs similarity index 100% rename from src/domain/mod.rs rename to simconnect-sdk/src/domain/mod.rs diff --git a/src/domain/notification.rs b/simconnect-sdk/src/domain/notification.rs similarity index 81% rename from src/domain/notification.rs rename to simconnect-sdk/src/domain/notification.rs index ff3eb59..b20cb5b 100644 --- a/src/domain/notification.rs +++ b/simconnect-sdk/src/domain/notification.rs @@ -1,4 +1,4 @@ -use crate::{AirportData, Event, SimConnectObject}; +use crate::{AirportData, Event, SimConnectObjectExt}; pub enum Notification { Open, @@ -15,7 +15,7 @@ pub struct NotificationData { } impl NotificationData { - pub fn try_into(&self) -> Option { + pub fn try_into(&self) -> Option { let type_id: String = std::any::type_name::().into(); if self.type_id == type_id { diff --git a/src/domain/period.rs b/simconnect-sdk/src/domain/period.rs similarity index 100% rename from src/domain/period.rs rename to simconnect-sdk/src/domain/period.rs diff --git a/src/errors.rs b/simconnect-sdk/src/errors.rs similarity index 100% rename from src/errors.rs rename to simconnect-sdk/src/errors.rs diff --git a/src/helpers.rs b/simconnect-sdk/src/helpers.rs similarity index 100% rename from src/helpers.rs rename to simconnect-sdk/src/helpers.rs diff --git a/src/lib.rs b/simconnect-sdk/src/lib.rs similarity index 59% rename from src/lib.rs rename to simconnect-sdk/src/lib.rs index 2d51cce..42b2646 100644 --- a/src/lib.rs +++ b/simconnect-sdk/src/lib.rs @@ -4,11 +4,14 @@ mod errors; mod helpers; mod macros; mod simconnect; -mod simconnect_object; +mod simconnect_object_ext; pub(crate) use macros::{as_c_string, ok_if_fail, success}; pub use domain::*; pub use errors::SimConnectError; pub use simconnect::SimConnect; -pub use simconnect_object::SimConnectObject; +pub use simconnect_object_ext::SimConnectObjectExt; + +extern crate simconnect_sdk_derive; +pub use simconnect_sdk_derive::*; diff --git a/src/macros.rs b/simconnect-sdk/src/macros.rs similarity index 100% rename from src/macros.rs rename to simconnect-sdk/src/macros.rs diff --git a/src/simconnect.rs b/simconnect-sdk/src/simconnect.rs similarity index 98% rename from src/simconnect.rs rename to simconnect-sdk/src/simconnect.rs index 2302b77..67cc6f0 100644 --- a/src/simconnect.rs +++ b/simconnect-sdk/src/simconnect.rs @@ -3,7 +3,7 @@ use std::ffi::c_void; use crate::{ as_c_string, bindings, helpers::fixed_c_str_to_string, ok_if_fail, success, AirportData, ConditionEnum, DataType, Event, Group, Notification, NotificationData, PeriodEnum, - SimConnectError, SimConnectObject, + SimConnectError, SimConnectObjectExt, }; #[derive(Debug)] @@ -38,7 +38,7 @@ impl SimConnect { }) } - pub fn register_object(&mut self) -> Result { + pub fn register_object(&mut self) -> Result { let type_id: String = std::any::type_name::().into(); if self.registered_objects.contains(&type_id) { diff --git a/src/simconnect_object.rs b/simconnect-sdk/src/simconnect_object_ext.rs similarity index 64% rename from src/simconnect_object.rs rename to simconnect-sdk/src/simconnect_object_ext.rs index 6990dc3..85e4be9 100644 --- a/src/simconnect_object.rs +++ b/simconnect-sdk/src/simconnect_object_ext.rs @@ -1,5 +1,5 @@ use crate::{NotificationData, SimConnect, SimConnectError}; -pub trait SimConnectObject: Clone + for<'a> TryFrom<&'a NotificationData> { +pub trait SimConnectObjectExt: Clone + for<'a> TryFrom<&'a NotificationData> { fn register(client: &mut SimConnect, id: u32) -> Result<(), SimConnectError>; }