Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 1 | #ifndef AOS_CONFIGURATION_FOR_RUST_H_ |
| 2 | #define AOS_CONFIGURATION_FOR_RUST_H_ |
| 3 | |
Brian Silverman | 6d49936 | 2022-08-18 17:50:46 -0700 | [diff] [blame] | 4 | #include <optional> |
| 5 | |
Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 6 | #include "aos/configuration.h" |
Brian Silverman | 6d49936 | 2022-08-18 17:50:46 -0700 | [diff] [blame] | 7 | #include "aos/for_rust.h" |
Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 8 | #include "cxx.h" |
| 9 | |
| 10 | namespace aos::configuration { |
| 11 | |
| 12 | const Channel *GetChannelForRust(const Configuration *config, rust::Str name, |
| 13 | rust::Str type, rust::Str application_name, |
| 14 | const Node *node); |
| 15 | |
Brian Silverman | 67cdbd6 | 2022-08-15 06:03:55 -0700 | [diff] [blame] | 16 | const Node *GetNodeForRust(const Configuration *config, rust::Str name); |
| 17 | |
Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 18 | // Returns a Configuration flatbuffer. Returns an empty vector on errors. |
Brian Silverman | 67cdbd6 | 2022-08-15 06:03:55 -0700 | [diff] [blame] | 19 | // TODO(Brian): It would be nice to return more detailed errors (not found vs |
| 20 | // could not parse vs merging error). |
Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 21 | rust::Vec<uint8_t> MaybeReadConfigForRust( |
| 22 | rust::Str path, rust::Slice<const rust::Str> extra_import_paths); |
| 23 | |
Brian Silverman | 6d49936 | 2022-08-18 17:50:46 -0700 | [diff] [blame] | 24 | inline bool HasChannelTypeForRust(const Channel &channel) { |
| 25 | return channel.type(); |
| 26 | } |
| 27 | inline rust::Str GetChannelTypeForRust(const Channel &channel) { |
| 28 | return StringViewToRustStr(channel.type()->string_view()); |
| 29 | } |
| 30 | |
| 31 | inline bool HasChannelNameForRust(const Channel &channel) { |
| 32 | return channel.name(); |
| 33 | } |
| 34 | inline rust::Str GetChannelNameForRust(const Channel &channel) { |
| 35 | return StringViewToRustStr(channel.name()->string_view()); |
| 36 | } |
| 37 | |
Brian Silverman | 7edd1ce | 2022-07-23 16:10:54 -0700 | [diff] [blame] | 38 | } // namespace aos::configuration |
| 39 | |
| 40 | #endif // AOS_CONFIGURATION_FOR_RUST_H_ |