#pragma once
#include <cudf/dictionary/encode.hpp>
#include <cudf/dictionary/dictionary_column_view.hpp>
#include <cudf/dictionary/search.hpp>
#include <cudf/dictionary/update_keys.hpp>
#include <cudf/types.hpp>
#include <memory>
#include <vector>
#include "rust/cxx.h"
#include "column_shim.h"
#include "scalar_shim.h"
#include "table_shim.h"
namespace cudf_shims {
std::unique_ptr<OwnedColumn> dictionary_encode(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> dictionary_decode(
const OwnedColumn& col);
std::unique_ptr<OwnedScalar> dictionary_get_index(
const OwnedColumn& col,
const OwnedScalar& key);
std::unique_ptr<OwnedColumn> dictionary_add_keys(
const OwnedColumn& col,
const OwnedColumn& new_keys);
std::unique_ptr<OwnedColumn> dictionary_remove_keys(
const OwnedColumn& col,
const OwnedColumn& keys_to_remove);
std::unique_ptr<OwnedColumn> dictionary_remove_unused_keys(
const OwnedColumn& col);
std::unique_ptr<OwnedColumn> dictionary_set_keys(
const OwnedColumn& col,
const OwnedColumn& new_keys);
struct DictionaryMatchBuilder {
std::vector<std::unique_ptr<OwnedColumn>> columns;
void add_column(std::unique_ptr<OwnedColumn> col) {
columns.push_back(std::move(col));
}
int32_t num_columns() const {
return static_cast<int32_t>(columns.size());
}
};
std::unique_ptr<DictionaryMatchBuilder> dictionary_match_builder_new();
std::unique_ptr<OwnedTable> dictionary_match_dictionaries(
std::unique_ptr<DictionaryMatchBuilder> builder);
}