Skip to main content

sim_lib_stream_file/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! File-backed source and sink adapters for STREAM 6.
4//!
5//! The crate keeps host filesystem access behind explicit stream file
6//! capabilities: reads require `fs/read`, writes require `fs/write`, and
7//! compatibility `stream.file.*` aliases are accepted by the gates. Each read or
8//! write is recorded as a KERNEL 6 filesystem effect. SMF support reuses the
9//! in-tree MIDI file codec; WAV support is limited to canonical little-endian
10//! PCM16 RIFF/WAVE because that is the PCM packet format implemented by the
11//! stream audio layer.
12
13mod cap;
14mod cassette;
15mod effect_io;
16mod midi;
17mod wav;
18
19pub use cap::{stream_file_read_capability, stream_file_write_capability};
20pub use cassette::{
21    cassette_expr_to_stream, cassette_to_stream, stream_to_cassette, stream_to_cassette_expr,
22    validate_cassette_fixture_path,
23};
24pub use midi::{
25    read_smf_stream, smf_bytes_to_stream, smf_file_to_stream, stream_to_smf_bytes,
26    stream_to_smf_file, write_smf_stream,
27};
28pub use wav::{
29    WavStream, pcm_buffers_to_wav_bytes, read_wav_stream, stream_to_wav_bytes, wav_bytes_to_stream,
30    write_wav_stream,
31};
32
33/// Cookbook recipes for this lib, embedded at build time.
34pub static RECIPES: sim_cookbook::EmbeddedDir =
35    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
36
37#[cfg(test)]
38mod tests;