#pragma once
#include <cudf/replace.hpp>
#include <cudf/types.hpp>
#include <memory>
#include "rust/cxx.h"
#include "column_shim.h"
#include "scalar_shim.h"
namespace cudf_shims {
std::unique_ptr<OwnedColumn> replace_nulls_column(
const OwnedColumn& col,
const OwnedColumn& replacement);
std::unique_ptr<OwnedColumn> replace_nulls_scalar(
const OwnedColumn& col,
const OwnedScalar& replacement);
std::unique_ptr<OwnedColumn> replace_nans_scalar(
const OwnedColumn& col,
const OwnedScalar& replacement);
std::unique_ptr<OwnedColumn> replace_nans_column(
const OwnedColumn& col,
const OwnedColumn& replacement);
std::unique_ptr<OwnedColumn> clamp(
const OwnedColumn& col,
const OwnedScalar& lo,
const OwnedScalar& hi);
std::unique_ptr<OwnedColumn> normalize_nans_and_zeros(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> replace_nulls_policy(
const OwnedColumn& col,
int32_t policy);
std::unique_ptr<OwnedColumn> find_and_replace_all(
const OwnedColumn& col,
const OwnedColumn& old_values,
const OwnedColumn& new_values);
void normalize_nans_and_zeros_inplace(OwnedColumn& col);
std::unique_ptr<OwnedColumn> clamp_with_replace(
const OwnedColumn& col,
const OwnedScalar& lo,
const OwnedScalar& lo_replace,
const OwnedScalar& hi,
const OwnedScalar& hi_replace);
}