2019-11-24 23:19:12 +01:00
|
|
|
use crate::data::value;
|
2019-11-24 23:19:12 +01:00
|
|
|
use crate::prelude::*;
|
|
|
|
|
|
|
|
mod dynamic;
|
2019-11-24 23:19:12 +01:00
|
|
|
pub(crate) mod external;
|
|
|
|
pub(crate) mod internal;
|
2019-11-24 23:19:12 +01:00
|
|
|
|
|
|
|
#[allow(unused_imports)]
|
|
|
|
pub(crate) use dynamic::Command as DynamicCommand;
|
|
|
|
|
|
|
|
pub(crate) struct ClassifiedInputStream {
|
|
|
|
pub(crate) objects: InputStream,
|
|
|
|
pub(crate) stdin: Option<std::fs::File>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ClassifiedInputStream {
|
|
|
|
pub(crate) fn new() -> ClassifiedInputStream {
|
|
|
|
ClassifiedInputStream {
|
2019-11-24 23:19:12 +01:00
|
|
|
objects: vec![value::nothing().into_value(Tag::unknown())].into(),
|
2019-11-24 23:19:12 +01:00
|
|
|
stdin: None,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn from_input_stream(stream: impl Into<InputStream>) -> ClassifiedInputStream {
|
|
|
|
ClassifiedInputStream {
|
|
|
|
objects: stream.into(),
|
|
|
|
stdin: None,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn from_stdout(stdout: std::fs::File) -> ClassifiedInputStream {
|
|
|
|
ClassifiedInputStream {
|
|
|
|
objects: VecDeque::new().into(),
|
|
|
|
stdin: Some(stdout),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|