use ext_php_rs::args::ArgInfo;
use ext_php_rs::zend::FunctionEntry;
#[derive(Default)]
pub struct FunctionEntries {
entries: Vec<FunctionEntry>,
arg_info: Vec<Box<[ArgInfo]>>,
}
impl FunctionEntries {
pub fn push(
&mut self,
(entry, arg_info): (FunctionEntry, Box<[ArgInfo]>),
) {
self.entries.push(entry);
self.arg_info.push(arg_info);
}
pub(crate) fn into_raw(mut self) -> *const FunctionEntry {
self.entries.push(FunctionEntry::end());
Box::leak(Box::new(self)).entries.as_ptr()
}
}
impl Extend<(FunctionEntry, Box<[ArgInfo]>)> for FunctionEntries {
fn extend<T: IntoIterator<Item = (FunctionEntry, Box<[ArgInfo]>)>>(
&mut self,
functions: T,
) {
for function in functions {
self.push(function);
}
}
}