#pragma once
#include <cudf/lists/explode.hpp>
#include <cudf/lists/sorting.hpp>
#include <cudf/lists/contains.hpp>
#include <cudf/lists/extract.hpp>
#include <cudf/lists/count_elements.hpp>
#include <cudf/lists/combine.hpp>
#include <cudf/lists/filling.hpp>
#include <cudf/lists/gather.hpp>
#include <cudf/lists/set_operations.hpp>
#include <cudf/lists/reverse.hpp>
#include <cudf/lists/stream_compaction.hpp>
#include <cudf/lists/lists_column_view.hpp>
#include <cudf/types.hpp>
#include <memory>
#include "rust/cxx.h"
#include "column_shim.h"
#include "table_shim.h"
#include "scalar_shim.h"
namespace cudf_shims {
std::unique_ptr<OwnedTable> lists_explode(
const OwnedTable& table,
int32_t explode_col_idx);
std::unique_ptr<OwnedTable> lists_explode_outer(
const OwnedTable& table,
int32_t explode_col_idx);
std::unique_ptr<OwnedTable> lists_explode_position(
const OwnedTable& table,
int32_t explode_col_idx);
std::unique_ptr<OwnedTable> lists_explode_outer_position(
const OwnedTable& table,
int32_t explode_col_idx);
std::unique_ptr<OwnedColumn> lists_sort(
const OwnedColumn& col,
bool ascending,
int32_t null_order);
std::unique_ptr<OwnedColumn> lists_contains(
const OwnedColumn& col,
const OwnedScalar& search_key);
std::unique_ptr<OwnedColumn> lists_contains_nulls(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> lists_extract(
const OwnedColumn& col,
int32_t index);
std::unique_ptr<OwnedColumn> lists_count_elements(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> lists_index_of_scalar(
const OwnedColumn& col,
const OwnedScalar& key);
std::unique_ptr<OwnedColumn> lists_concatenate_rows(
const OwnedTable& table);
std::unique_ptr<OwnedColumn> lists_concatenate_list_elements(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> lists_sequences(
const OwnedColumn& starts,
const OwnedColumn& sizes);
std::unique_ptr<OwnedColumn> lists_segmented_gather(
const OwnedColumn& col,
const OwnedColumn& gather_map);
std::unique_ptr<OwnedColumn> lists_have_overlap(
const OwnedColumn& lhs,
const OwnedColumn& rhs);
std::unique_ptr<OwnedColumn> lists_intersect_distinct(
const OwnedColumn& lhs,
const OwnedColumn& rhs);
std::unique_ptr<OwnedColumn> lists_union_distinct(
const OwnedColumn& lhs,
const OwnedColumn& rhs);
std::unique_ptr<OwnedColumn> lists_difference_distinct(
const OwnedColumn& lhs,
const OwnedColumn& rhs);
std::unique_ptr<OwnedColumn> lists_reverse(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> lists_apply_boolean_mask(
const OwnedColumn& col,
const OwnedColumn& mask);
std::unique_ptr<OwnedColumn> lists_distinct(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> lists_stable_sort(
const OwnedColumn& col,
bool ascending,
int32_t null_order);
std::unique_ptr<OwnedColumn> lists_extract_column_index(
const OwnedColumn& col,
const OwnedColumn& indices);
std::unique_ptr<OwnedColumn> lists_contains_column(
const OwnedColumn& col,
const OwnedColumn& search_keys);
}