#pragma once
#include <cudf/strings/find.hpp>
#include <cudf/strings/find_multiple.hpp>
#include <memory>
#include "rust/cxx.h"
#include "column_shim.h"
#include "table_shim.h"
namespace cudf_shims {
std::unique_ptr<OwnedColumn> str_find(
const OwnedColumn& col, rust::Str target, int32_t start);
std::unique_ptr<OwnedColumn> str_rfind(
const OwnedColumn& col, rust::Str target);
std::unique_ptr<OwnedColumn> str_starts_with(
const OwnedColumn& col, rust::Str target);
std::unique_ptr<OwnedColumn> str_ends_with(
const OwnedColumn& col, rust::Str target);
std::unique_ptr<OwnedTable> str_contains_multiple(
const OwnedColumn& col, const OwnedColumn& targets);
std::unique_ptr<OwnedColumn> str_find_multiple(
const OwnedColumn& col, const OwnedColumn& targets);
std::unique_ptr<OwnedColumn> str_find_column(
const OwnedColumn& col, const OwnedColumn& targets, int32_t start);
std::unique_ptr<OwnedColumn> str_find_instance(
const OwnedColumn& col, rust::Str target, int32_t instance);
std::unique_ptr<OwnedColumn> str_contains_column(
const OwnedColumn& col, const OwnedColumn& targets);
std::unique_ptr<OwnedColumn> str_starts_with_column(
const OwnedColumn& col, const OwnedColumn& targets);
std::unique_ptr<OwnedColumn> str_ends_with_column(
const OwnedColumn& col, const OwnedColumn& targets);
}