use crate::column::Column;
use crate::error::{CudfError, Result};
use crate::table::Table;
pub fn concatenate_columns(columns: &[&Column]) -> Result<Column> {
if columns.is_empty() {
return Err(CudfError::InvalidArgument(
"Cannot concatenate zero columns".to_string(),
));
}
let mut builder = cudf_cxx::concatenate::ffi::new_column_concat_builder();
for col in columns {
builder
.as_mut()
.ok_or_else(|| CudfError::Cxx("failed to create column concat builder".into()))?
.add(&col.inner);
}
let raw = builder.build().map_err(CudfError::from_cxx)?;
Ok(Column { inner: raw })
}
pub fn concatenate_tables(tables: &[&Table]) -> Result<Table> {
if tables.is_empty() {
return Err(CudfError::InvalidArgument(
"Cannot concatenate zero tables".to_string(),
));
}
let mut builder = cudf_cxx::concatenate::ffi::new_table_concat_builder();
for tbl in tables {
builder
.as_mut()
.ok_or_else(|| CudfError::Cxx("failed to create table concat builder".into()))?
.add(&tbl.inner);
}
let raw = builder.build().map_err(CudfError::from_cxx)?;
Ok(Table { inner: raw })
}