duckdb-extension-framework 0.6.0

Purely experimental DuckDB extension framework
Documentation
#include "duckdb.hpp"
#include "wrapper.hpp"

#include <memory>

static duckdb::child_list_t<duckdb::LogicalType>
getVector(idx_t n_pairs, const char *const *names, duckdb_logical_type const *types) {
    duckdb::child_list_t<duckdb::LogicalType> members;
    for (idx_t i = 0; i < n_pairs; i++) {
        members.emplace_back(
                std::string(names[i]),
                *(duckdb::LogicalType *) types[i]
        );
    }
    return members;
}

extern "C" {

duckdb_logical_type duckdb_create_struct_type(idx_t n_pairs, const char **names, const duckdb_logical_type *types) {
    auto *stype = new duckdb::LogicalType;
    *stype = duckdb::LogicalType::STRUCT(getVector(n_pairs, names, types));
    return stype;
}

duckdb_logical_type duckdb_create_union(idx_t nmembers, const char **names, const duckdb_logical_type *types) {
    auto *utype = new duckdb::LogicalType;
    *utype = duckdb::LogicalType::UNION(getVector(nmembers, names, types));
    return utype;
}

}