Packages

An Elixir DuckDB library

Current section

Files

Jump to
exduckdb c_src duckdb src main capi helper-c.cpp
Raw

c_src/duckdb/src/main/capi/helper-c.cpp

#include "duckdb/main/capi_internal.hpp"
namespace duckdb {
duckdb_type ConvertCPPTypeToC(const LogicalType &sql_type) {
switch (sql_type.id()) {
case LogicalTypeId::BOOLEAN:
return DUCKDB_TYPE_BOOLEAN;
case LogicalTypeId::TINYINT:
return DUCKDB_TYPE_TINYINT;
case LogicalTypeId::SMALLINT:
return DUCKDB_TYPE_SMALLINT;
case LogicalTypeId::INTEGER:
return DUCKDB_TYPE_INTEGER;
case LogicalTypeId::BIGINT:
return DUCKDB_TYPE_BIGINT;
case LogicalTypeId::UTINYINT:
return DUCKDB_TYPE_UTINYINT;
case LogicalTypeId::USMALLINT:
return DUCKDB_TYPE_USMALLINT;
case LogicalTypeId::UINTEGER:
return DUCKDB_TYPE_UINTEGER;
case LogicalTypeId::UBIGINT:
return DUCKDB_TYPE_UBIGINT;
case LogicalTypeId::HUGEINT:
return DUCKDB_TYPE_HUGEINT;
case LogicalTypeId::FLOAT:
return DUCKDB_TYPE_FLOAT;
case LogicalTypeId::DOUBLE:
return DUCKDB_TYPE_DOUBLE;
case LogicalTypeId::TIMESTAMP:
case LogicalTypeId::TIMESTAMP_SEC:
case LogicalTypeId::TIMESTAMP_MS:
case LogicalTypeId::TIMESTAMP_NS:
return DUCKDB_TYPE_TIMESTAMP;
case LogicalTypeId::DATE:
return DUCKDB_TYPE_DATE;
case LogicalTypeId::TIME:
return DUCKDB_TYPE_TIME;
case LogicalTypeId::VARCHAR:
return DUCKDB_TYPE_VARCHAR;
case LogicalTypeId::BLOB:
return DUCKDB_TYPE_BLOB;
case LogicalTypeId::INTERVAL:
return DUCKDB_TYPE_INTERVAL;
default: // LCOV_EXCL_START
D_ASSERT(0);
return DUCKDB_TYPE_INVALID;
} // LCOV_EXCL_STOP
}
idx_t GetCTypeSize(duckdb_type type) {
switch (type) {
case DUCKDB_TYPE_BOOLEAN:
return sizeof(bool);
case DUCKDB_TYPE_TINYINT:
return sizeof(int8_t);
case DUCKDB_TYPE_SMALLINT:
return sizeof(int16_t);
case DUCKDB_TYPE_INTEGER:
return sizeof(int32_t);
case DUCKDB_TYPE_BIGINT:
return sizeof(int64_t);
case DUCKDB_TYPE_UTINYINT:
return sizeof(uint8_t);
case DUCKDB_TYPE_USMALLINT:
return sizeof(uint16_t);
case DUCKDB_TYPE_UINTEGER:
return sizeof(uint32_t);
case DUCKDB_TYPE_UBIGINT:
return sizeof(uint64_t);
case DUCKDB_TYPE_HUGEINT:
return sizeof(duckdb_hugeint);
case DUCKDB_TYPE_FLOAT:
return sizeof(float);
case DUCKDB_TYPE_DOUBLE:
return sizeof(double);
case DUCKDB_TYPE_DATE:
return sizeof(duckdb_date);
case DUCKDB_TYPE_TIME:
return sizeof(duckdb_time);
case DUCKDB_TYPE_TIMESTAMP:
return sizeof(duckdb_timestamp);
case DUCKDB_TYPE_VARCHAR:
return sizeof(const char *);
case DUCKDB_TYPE_BLOB:
return sizeof(duckdb_blob);
case DUCKDB_TYPE_INTERVAL:
return sizeof(duckdb_interval);
default: // LCOV_EXCL_START
// unsupported type
D_ASSERT(0);
return sizeof(const char *);
} // LCOV_EXCL_STOP
}
} // namespace duckdb
void *duckdb_malloc(size_t size) {
return malloc(size);
}
void duckdb_free(void *ptr) {
free(ptr);
}