36#if FB_CPP_USE_BOOST_MULTIPRECISION != 0 
   37#include <boost/multiprecision/cpp_int.hpp> 
   38#include <boost/multiprecision/cpp_dec_float.hpp> 
   53        bool operator==(
const ScaledNumber&) 
const noexcept = 
default;
 
 
   81#if FB_CPP_USE_BOOST_MULTIPRECISION != 0 
   93#if FB_CPP_USE_BOOST_MULTIPRECISION != 0 
   97    using BoostDecFloat16 = boost::multiprecision::number<boost::multiprecision::cpp_dec_float<16>>;
 
  102    using BoostDecFloat34 = boost::multiprecision::number<boost::multiprecision::cpp_dec_float<34>>;
 
  108    using Date = std::chrono::year_month_day;
 
  113    using Time = std::chrono::hh_mm_ss<std::chrono::microseconds>;
 
  120        bool operator==(
const Timestamp& o) 
const noexcept 
  130        std::chrono::local_time<std::chrono::microseconds> 
toLocalTime() const noexcept
 
  132            return std::chrono::local_days{
date} + 
time.to_duration();
 
 
  140            const auto days = std::chrono::floor<std::chrono::days>(value);
 
  141            const Date dateValue{days};
 
  142            const auto timeOfDay = std::chrono::duration_cast<std::chrono::microseconds>(value - days);
 
 
 
  163        bool operator==(
const TimeTz& o) 
const noexcept 
 
  184        bool operator==(
const TimestampTz&) 
const noexcept = 
default;
 
 
  222        bool operator==(
const OpaqueDate&) 
const noexcept = 
default;
 
 
  235        bool operator==(
const OpaqueTime&) 
const noexcept = 
default;
 
 
  250            return value.timestamp_date == o.
value.timestamp_date && 
value.timestamp_time == o.
value.timestamp_time;
 
 
  282            return value.utc_timestamp.timestamp_date == o.
value.utc_timestamp.timestamp_date &&
 
  283                value.utc_timestamp.timestamp_time == o.
value.utc_timestamp.timestamp_time &&
 
 
  297    template <
typename T>
 
  300        os << scaledNumber.
value << 
"e" << scaledNumber.
scale;
 
 
  311struct std::formatter<
fbcpp::ScaledNumber<T>> : std::formatter<T>
 
  316    constexpr auto parse(format_parse_context& ctx)
 
  318        return std::formatter<T>::parse(ctx);
 
 
  324    template <
typename FormatContext>
 
  327        return std::format_to(
 
  328            ctx.out(), 
"{}e{}", std::formatter<T>::format(scaledNumber.
value, ctx), scaledNumber.
scale);
 
 
 
std::ostream & operator<<(std::ostream &os, const fbcpp::ScaledNumber< T > &scaledNumber)
Stream insertion helper that renders the scaled number as value followed by e and the scale.
boost::multiprecision::number< boost::multiprecision::cpp_dec_float< 34 > > BoostDecFloat34
34-digit decimal floating point using Boost.Multiprecision.
FB_DEC16 OpaqueDecFloat16
Opaque 16-digit decimal floating point exposed by the Firebird API.
boost::multiprecision::number< boost::multiprecision::cpp_dec_float< 16 > > BoostDecFloat16
16-digit decimal floating point using Boost.Multiprecision.
FB_I128 OpaqueInt128
Opaque 128-bit integer exposed by the Firebird API.
std::chrono::year_month_day Date
Firebird SQL calendar date.
FB_DEC34 OpaqueDecFloat34
Opaque 34-digit decimal floating point exposed by the Firebird API.
boost::multiprecision::int128_t BoostInt128
128-bit integer using Boost.Multiprecision.
std::chrono::hh_mm_ss< std::chrono::microseconds > Time
Firebird SQL time-of-day with microsecond resolution.
Wrapper for Firebird date values.
ISC_DATE value
Raw Firebird date representation.
Wrapper for Firebird time-with-time-zone values.
ISC_TIME_TZ value
Raw Firebird time-with-time-zone representation.
Wrapper for Firebird time values.
ISC_TIME value
Raw Firebird time representation.
Wrapper for Firebird timestamp-with-time-zone values.
ISC_TIMESTAMP_TZ value
Raw Firebird timestamp-with-time-zone representation.
Wrapper for Firebird timestamp values.
ISC_TIMESTAMP value
Raw Firebird timestamp representation.
Represents a numeric value with an explicit decimal scale.
int scale
Decimal scale applied to value.
T value
Unscaled numeric value.
Local time bound to a time zone.
Time utcTime
UTC-normalised time-of-day.
std::string zone
Time zone identifier.
Timestamp bound to a time zone.
Timestamp utcTimestamp
UTC-normalised timestamp.
std::string zone
Time zone identifier.
Combined date and time with microsecond precision.
std::chrono::local_time< std::chrono::microseconds > toLocalTime() const noexcept
Converts to std::chrono::local_time<std::chrono::microseconds>.
Time time
Time-of-day component.
Date date
Calendar date component.
static Timestamp fromLocalTime(std::chrono::local_time< std::chrono::microseconds > value) noexcept
Builds a timestamp from a local-time value.