protoflow_blocks/
lib.rs

1// This is free and unencumbered software released into the public domain.
2
3#![no_std]
4#![deny(unsafe_code)]
5
6#[doc(hidden)]
7pub use protoflow_core::prelude;
8
9mod block_config;
10pub use block_config::*;
11
12mod block_connections;
13pub use block_connections::*;
14
15mod block_instantiation;
16pub use block_instantiation::*;
17
18mod block_tag;
19pub use block_tag::*;
20
21#[cfg(feature = "std")]
22mod stdio;
23#[cfg(feature = "std")]
24pub use stdio::*;
25
26mod system;
27pub use system::*;
28
29pub mod types;
30pub use types::*;
31
32pub use protoflow_core::{SystemBuilding, SystemExecution};
33
34include!("blocks/core.rs"); // CoreBlocks
35include!("blocks/flow.rs"); // FlowBlocks
36include!("blocks/hash.rs"); // HashBlocks
37include!("blocks/io.rs"); // IoBlocks
38include!("blocks/math.rs"); // MathBlocks
39include!("blocks/sys.rs"); // SysBlocks
40include!("blocks/text.rs"); // TextBlocks
41
42pub trait AllBlocks:
43    CoreBlocks + FlowBlocks + HashBlocks + IoBlocks + MathBlocks + SysBlocks + TextBlocks
44{
45}
46
47#[cfg(feature = "std")]
48#[doc(hidden)]
49pub fn build_stdio_system(
50    system_name: prelude::String,
51    config: StdioConfig,
52) -> Result<System, StdioError> {
53    use prelude::String;
54    Ok(match system_name.as_ref() {
55        // CoreBlocks
56        "Buffer" => Buffer::<String>::build_system(config)?,
57        "Const" => Const::<String>::build_system(config)?,
58        "Count" => Count::<String>::build_system(config)?,
59        "Delay" => Delay::<String>::build_system(config)?,
60        "Drop" => Drop::<String>::build_system(config)?,
61        "Random" => Random::<u64>::build_system(config)?,
62        // FlowBlocks
63        // HashBlocks
64        #[cfg(feature = "hash")]
65        "Hash" => Hash::build_system(config)?,
66        // IoBlocks
67        "Decode" => Decode::build_system(config)?,
68        "DecodeJSON" => DecodeJson::build_system(config)?,
69        "Encode" => Encode::build_system(config)?,
70        "EncodeHex" => EncodeHex::build_system(config)?,
71        "EncodeJSON" => EncodeJson::build_system(config)?,
72        // MathBlocks
73        // SysBlocks
74        "ReadDir" => ReadDir::build_system(config)?,
75        "ReadEnv" => ReadEnv::<String>::build_system(config)?,
76        "ReadFile" => ReadFile::build_system(config)?,
77        "ReadStdin" => ReadStdin::build_system(config)?,
78        "WriteFile" => WriteFile::build_system(config)?,
79        "WriteStderr" => WriteStderr::build_system(config)?,
80        "WriteStdout" => WriteStdout::build_system(config)?,
81        // TextBlocks
82        _ => return Err(StdioError::UnknownSystem(system_name))?,
83    })
84}