Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::Radix Struct Reference

Public Member Functions

template<>
void EncodeData (data_ptr_t dataptr, bool value)
 
template<>
void EncodeData (data_ptr_t dataptr, int8_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, int16_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, int32_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, int64_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, uint8_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, uint16_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, uint32_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, uint64_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, hugeint_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, uhugeint_t value)
 
template<>
void EncodeData (data_ptr_t dataptr, float value)
 
template<>
void EncodeData (data_ptr_t dataptr, double value)
 
template<>
void EncodeData (data_ptr_t dataptr, interval_t value)
 
template<>
bool DecodeData (const_data_ptr_t input)
 
template<>
int8_t DecodeData (const_data_ptr_t input)
 
template<>
int16_t DecodeData (const_data_ptr_t input)
 
template<>
int32_t DecodeData (const_data_ptr_t input)
 
template<>
int64_t DecodeData (const_data_ptr_t input)
 
template<>
uint8_t DecodeData (const_data_ptr_t input)
 
template<>
uint16_t DecodeData (const_data_ptr_t input)
 
template<>
uint32_t DecodeData (const_data_ptr_t input)
 
template<>
uint64_t DecodeData (const_data_ptr_t input)
 
template<>
hugeint_t DecodeData (const_data_ptr_t input)
 
template<>
uhugeint_t DecodeData (const_data_ptr_t input)
 
template<>
float DecodeData (const_data_ptr_t input)
 
template<>
double DecodeData (const_data_ptr_t input)
 
template<>
interval_t DecodeData (const_data_ptr_t input)
 

Static Public Member Functions

template<class T >
static void EncodeData (data_ptr_t dataptr, T value)
 
template<class T >
staticDecodeData (const_data_ptr_t input)
 
static void EncodeStringDataPrefix (data_ptr_t dataptr, string_t value, idx_t prefix_len)
 
static uint8_t FlipSign (uint8_t key_byte)
 
static uint32_t EncodeFloat (float x)
 
static float DecodeFloat (uint32_t input)
 
static uint64_t EncodeDouble (double x)
 
static double DecodeDouble (uint64_t input)
 

Static Private Member Functions

template<class T >
static void EncodeSigned (data_ptr_t dataptr, T value)
 
template<class T >
staticDecodeSigned (const_data_ptr_t input)
 

Member Function Documentation

◆ EncodeData() [1/15]

template<class T >
static void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
value 
)
inlinestatic
58505 {
58506 throw NotImplementedException("Cannot create data from this type");
58507 }

◆ DecodeData() [1/15]

template<class T >
static T duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inlinestatic
58510 {
58511 throw NotImplementedException("Cannot read data from this type");
58512 }

◆ EncodeStringDataPrefix()

static void duckdb::Radix::EncodeStringDataPrefix ( data_ptr_t  dataptr,
string_t  value,
idx_t  prefix_len 
)
inlinestatic
58514 {
58515 auto len = value.GetSize();
58516 memcpy(dataptr, value.GetData(), MinValue(len, prefix_len));
58517 if (len < prefix_len) {
58518 memset(dataptr + len, '\0', prefix_len - len);
58519 }
58520 }

◆ FlipSign()

static uint8_t duckdb::Radix::FlipSign ( uint8_t  key_byte)
inlinestatic
58522 {
58523 return key_byte ^ 128;
58524 }

◆ EncodeFloat()

static uint32_t duckdb::Radix::EncodeFloat ( float  x)
inlinestatic

zero

infinity

-infinity

+0 and positive numbers

negative numbers

complement 1

58526 {
58527 uint32_t buff;
58529 if (x == 0) {
58530 buff = 0;
58531 buff |= (1u << 31);
58532 return buff;
58533 }
58534
58535 // nan
58536 if (Value::IsNan(x)) {
58537 return UINT_MAX;
58538 }
58540 if (x > FLT_MAX) {
58541 return UINT_MAX - 1;
58542 }
58544 if (x < -FLT_MAX) {
58545 return 0;
58546 }
58547 buff = Load<uint32_t>(const_data_ptr_cast(&x));
58548 if ((buff & (1U << 31)) == 0) {
58549 buff |= (1U << 31);
58550 } else {
58551 buff = ~buff;
58552 }
58553
58554 return buff;
58555 }
::uint32_t uint32_t

◆ DecodeFloat()

static float duckdb::Radix::DecodeFloat ( uint32_t  input)
inlinestatic
58557 {
58558 // nan
58559 if (input == UINT_MAX) {
58560 return std::numeric_limits<float>::quiet_NaN();
58561 }
58562 if (input == UINT_MAX - 1) {
58563 return std::numeric_limits<float>::infinity();
58564 }
58565 if (input == 0) {
58566 return -std::numeric_limits<float>::infinity();
58567 }
58568 float result;
58569 if (input & (1U << 31)) {
58570 // positive numbers - flip sign bit
58571 input = input ^ (1U << 31);
58572 } else {
58573 // negative numbers - invert
58574 input = ~input;
58575 }
58576 Store<uint32_t>(input, data_ptr_cast(&result));
58577 return result;
58578 }

◆ EncodeDouble()

static uint64_t duckdb::Radix::EncodeDouble ( double  x)
inlinestatic

zero

infinity

-infinity

+0 and positive numbers

negative numbers

complement 1

58580 {
58581 uint64_t buff;
58583 if (x == 0) {
58584 buff = 0;
58585 buff += (1ULL << 63);
58586 return buff;
58587 }
58588 // nan
58589 if (Value::IsNan(x)) {
58590 return ULLONG_MAX;
58591 }
58593 if (x > DBL_MAX) {
58594 return ULLONG_MAX - 1;
58595 }
58597 if (x < -DBL_MAX) {
58598 return 0;
58599 }
58600 buff = Load<uint64_t>(const_data_ptr_cast(&x));
58601 if (buff < (1ULL << 63)) {
58602 buff += (1ULL << 63);
58603 } else {
58604 buff = ~buff;
58605 }
58606 return buff;
58607 }
::uint64_t uint64_t

◆ DecodeDouble()

static double duckdb::Radix::DecodeDouble ( uint64_t  input)
inlinestatic
58608 {
58609 // nan
58610 if (input == ULLONG_MAX) {
58611 return std::numeric_limits<double>::quiet_NaN();
58612 }
58613 if (input == ULLONG_MAX - 1) {
58614 return std::numeric_limits<double>::infinity();
58615 }
58616 if (input == 0) {
58617 return -std::numeric_limits<double>::infinity();
58618 }
58619 double result;
58620 if (input & (1ULL << 63)) {
58621 // positive numbers - flip sign bit
58622 input = input ^ (1ULL << 63);
58623 } else {
58624 // negative numbers - invert
58625 input = ~input;
58626 }
58627 Store<uint64_t>(input, data_ptr_cast(&result));
58628 return result;
58629 }

◆ EncodeSigned()

template<class T >
void duckdb::Radix::EncodeSigned ( data_ptr_t  dataptr,
value 
)
staticprivate
58644 {
58645 using UNSIGNED = typename MakeUnsigned<T>::type;
58646 UNSIGNED bytes;
58647 Store<T>(value, data_ptr_cast(&bytes));
58648 Store<UNSIGNED>(BSwapIfLE(bytes), dataptr);
58649 dataptr[0] = FlipSign(dataptr[0]);
58650}

◆ DecodeSigned()

template<class T >
T duckdb::Radix::DecodeSigned ( const_data_ptr_t  input)
staticprivate
58731 {
58732 using UNSIGNED = typename MakeUnsigned<T>::type;
58733 UNSIGNED bytes = Load<UNSIGNED>(input);
58734 auto bytes_data = data_ptr_cast(&bytes);
58735 bytes_data[0] = FlipSign(bytes_data[0]);
58736 T result;
58737 Store<UNSIGNED>(BSwapIfLE(bytes), data_ptr_cast(&result));
58738 return result;
58739}

◆ EncodeData() [2/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
bool  value 
)
inline
58639 {
58640 Store<uint8_t>(value ? 1 : 0, dataptr);
58641}

◆ EncodeData() [3/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
int8_t  value 
)
inline
58653 {
58654 EncodeSigned<int8_t>(dataptr, value);
58655}

◆ EncodeData() [4/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
int16_t  value 
)
inline
58658 {
58659 EncodeSigned<int16_t>(dataptr, value);
58660}

◆ EncodeData() [5/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
int32_t  value 
)
inline
58663 {
58664 EncodeSigned<int32_t>(dataptr, value);
58665}

◆ EncodeData() [6/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
int64_t  value 
)
inline
58668 {
58669 EncodeSigned<int64_t>(dataptr, value);
58670}

◆ EncodeData() [7/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
uint8_t  value 
)
inline
58673 {
58674 Store<uint8_t>(value, dataptr);
58675}

◆ EncodeData() [8/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
uint16_t  value 
)
inline
58678 {
58679 Store<uint16_t>(BSwapIfLE(value), dataptr);
58680}

◆ EncodeData() [9/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
uint32_t  value 
)
inline
58683 {
58684 Store<uint32_t>(BSwapIfLE(value), dataptr);
58685}

◆ EncodeData() [10/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
uint64_t  value 
)
inline
58688 {
58689 Store<uint64_t>(BSwapIfLE(value), dataptr);
58690}

◆ EncodeData() [11/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
hugeint_t  value 
)
inline
58693 {
58694 EncodeData<int64_t>(dataptr, value.upper);
58695 EncodeData<uint64_t>(dataptr + sizeof(value.upper), value.lower);
58696}

◆ EncodeData() [12/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
uhugeint_t  value 
)
inline
58699 {
58700 EncodeData<uint64_t>(dataptr, value.upper);
58701 EncodeData<uint64_t>(dataptr + sizeof(value.upper), value.lower);
58702}

◆ EncodeData() [13/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
float  value 
)
inline
58705 {
58706 uint32_t converted_value = EncodeFloat(value);
58707 Store<uint32_t>(BSwapIfLE(converted_value), dataptr);
58708}
static uint32_t EncodeFloat(float x)
Definition duckdb.cpp:58526

◆ EncodeData() [14/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
double  value 
)
inline
58711 {
58712 uint64_t converted_value = EncodeDouble(value);
58713 Store<uint64_t>(BSwapIfLE(converted_value), dataptr);
58714}
static uint64_t EncodeDouble(double x)
Definition duckdb.cpp:58580

◆ EncodeData() [15/15]

template<>
void duckdb::Radix::EncodeData ( data_ptr_t  dataptr,
interval_t  value 
)
inline
58717 {
58718 EncodeData<int32_t>(dataptr, value.months);
58719 dataptr += sizeof(value.months);
58720 EncodeData<int32_t>(dataptr, value.days);
58721 dataptr += sizeof(value.days);
58722 EncodeData<int64_t>(dataptr, value.micros);
58723}

◆ DecodeData() [2/15]

template<>
bool duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58726 {
58727 return Load<uint8_t>(input) != 0;
58728}

◆ DecodeData() [3/15]

template<>
int8_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58742 {
58743 return DecodeSigned<int8_t>(input);
58744}

◆ DecodeData() [4/15]

template<>
int16_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58747 {
58748 return DecodeSigned<int16_t>(input);
58749}

◆ DecodeData() [5/15]

template<>
int32_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58752 {
58753 return DecodeSigned<int32_t>(input);
58754}

◆ DecodeData() [6/15]

template<>
int64_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58757 {
58758 return DecodeSigned<int64_t>(input);
58759}

◆ DecodeData() [7/15]

template<>
uint8_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58762 {
58763 return Load<uint8_t>(input);
58764}

◆ DecodeData() [8/15]

template<>
uint16_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58767 {
58768 return BSwapIfLE(Load<uint16_t>(input));
58769}

◆ DecodeData() [9/15]

template<>
uint32_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58772 {
58773 return BSwapIfLE(Load<uint32_t>(input));
58774}

◆ DecodeData() [10/15]

template<>
uint64_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58777 {
58778 return BSwapIfLE(Load<uint64_t>(input));
58779}

◆ DecodeData() [11/15]

template<>
hugeint_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58782 {
58783 hugeint_t result;
58784 result.upper = DecodeData<int64_t>(input);
58785 result.lower = DecodeData<uint64_t>(input + sizeof(int64_t));
58786 return result;
58787}
::int64_t int64_t

◆ DecodeData() [12/15]

template<>
uhugeint_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58790 {
58791 uhugeint_t result;
58792 result.upper = DecodeData<uint64_t>(input);
58793 result.lower = DecodeData<uint64_t>(input + sizeof(uint64_t));
58794 return result;
58795}

◆ DecodeData() [13/15]

template<>
float duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58798 {
58799 return DecodeFloat(BSwapIfLE(Load<uint32_t>(input)));
58800}

◆ DecodeData() [14/15]

template<>
double duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58803 {
58804 return DecodeDouble(BSwapIfLE(Load<uint64_t>(input)));
58805}

◆ DecodeData() [15/15]

template<>
interval_t duckdb::Radix::DecodeData ( const_data_ptr_t  input)
inline
58808 {
58809 interval_t result;
58810 result.months = DecodeData<int32_t>(input);
58811 result.days = DecodeData<int32_t>(input + sizeof(int32_t));
58812 result.micros = DecodeData<int64_t>(input + sizeof(int32_t) + sizeof(int32_t));
58813 return result;
58814}
::int32_t int32_t

The documentation for this struct was generated from the following file: