8#ifndef INCLUDED_BDLDFP_DECIMAL
9#define INCLUDED_BDLDFP_DECIMAL
665#include <bdldfp_decimal.fwd.h>
685#include <bsl_cstddef.h>
686#include <bsl_cstring.h>
688#include <bsl_iosfwd.h>
689#include <bsl_iterator.h>
690#include <bsl_limits.h>
691#include <bsl_locale.h>
694#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
702#define BDLDFP_DECIMAL_DF(lit) \
703 BloombergLP::bdldfp::Decimal32(BDLDFP_DECIMALIMPUTIL_DF(lit))
705#define BDLDFP_DECIMAL_DD(lit) \
706 BloombergLP::bdldfp::Decimal64(BDLDFP_DECIMALIMPUTIL_DD(lit))
708#define BDLDFP_DECIMAL_DL(lit) \
709 BloombergLP::bdldfp::Decimal128(BDLDFP_DECIMALIMPUTIL_DL(lit))
1226 template <
class STREAM>
1248 template <
class STREAM>
1734template <
class CHARTYPE,
class TRAITS>
1735bsl::basic_istream<CHARTYPE, TRAITS>&
1747template <
class CHARTYPE,
class TRAITS>
1748bsl::basic_ostream<CHARTYPE, TRAITS>&
1751#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
1752 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
1753inline namespace literals {
1754inline namespace DecimalLiterals {
1822template <
class HASHALG>
2274 template <
class STREAM>
2295 template <
class STREAM>
2311 bsl::ostream&
print(bsl::ostream& stream,
2313 int spacesPerLevel = 4)
const;
2922template <
class CHARTYPE,
class TRAITS>
2923bsl::basic_istream<CHARTYPE, TRAITS>&
2935template <
class CHARTYPE,
class TRAITS>
2936bsl::basic_ostream<CHARTYPE, TRAITS>&
2939#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
2940 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
2941inline namespace literals {
2942inline namespace DecimalLiterals {
3010template <
class HASHALG>
3420 template <
class STREAM>
3441 template <
class STREAM>
4072template <
class CHARTYPE,
class TRAITS>
4073bsl::basic_istream<CHARTYPE, TRAITS>&
4085template <
class CHARTYPE,
class TRAITS>
4086bsl::basic_ostream<CHARTYPE, TRAITS>&
4089#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
4090 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
4091inline namespace literals {
4092inline namespace DecimalLiterals {
4161template <
class HASHALG>
4176template <
class CHARTYPE,
4177 class INPUTITERATOR = bsl::istreambuf_iterator<CHARTYPE> >
4180#if defined(BSLS_LIBRARYFEATURES_STDCPP_LIBCSTD)
4183 bsl::locale::id& __get_id()
const;
4198 static bsl::locale::id
id;
4219 bsl::ios_base::iostate& err,
4224 bsl::ios_base::iostate& err,
4229 bsl::ios_base::iostate& err,
4257 bsl::ios_base::iostate& err,
4262 bsl::ios_base::iostate& err,
4267 bsl::ios_base::iostate& err,
4283template <class CHARTYPE,
bool WCHAR_8_BITS>
4294template <
bool WCHAR_8_BIT>
4298 const char *d_begin;
4313 const bsl::locale&);
4319 const char *begin()
const;
4323 const char *end()
const;
4338 wchar_t *d_buffer_p;
4355 const bsl::locale& loc);
4363 const wchar_t *begin()
const;
4366 const wchar_t *end()
const;
4378template <
bool WCHAR_8_BIT>
4385, d_end(buffer + len)
4392template <
bool WCHAR_8_BIT>
4399template <
bool WCHAR_8_BIT>
4415 const bsl::locale& loc)
4424 d_buffer_p = (
wchar_t *)allocator->
allocate(
sizeof(
wchar_t) * len);
4426 bsl::use_facet<std::ctype<wchar_t> >(loc).widen(buffer,
4449 return d_buffer_p + d_len;
4462template <
class CHARTYPE,
4463 class OUTPUTITERATOR = bsl::ostreambuf_iterator<CHARTYPE> >
4466#if defined(BSLS_LIBRARYFEATURES_STDCPP_LIBCSTD)
4469 bsl::locale::id& __get_id()
const;
4484 static bsl::locale::id
id;
4542 bsl::ios_base& ios_format,
4546 bsl::ios_base& ios_format,
4550 bsl::ios_base& ios_format,
4560 template <class DECIMAL>
4562 bsl::ios_base& ios_format,
4564 DECIMAL value) const;
4584template<
class NUMERIC_TYPE,
class DUMMY_TYPE =
void>
4596template<
class DUMMY_TYPE>
4605 static const bool is_specialized =
false;
4612template<
class DUMMY_TYPE>
4624 static const bool is_specialized =
true;
4629 static const int digits = 7;
4634 static const int digits10 = digits;
4640 static const int max_digits10 = digits;
4643 static const bool is_signed =
true;
4646 static const bool is_integer =
false;
4652 static const bool is_exact =
false;
4655 static const int radix = 10;
4660 static const int min_exponent = -95;
4666 static const int min_exponent10 = min_exponent;
4671 static const int max_exponent = 96;
4677 static const int max_exponent10 = max_exponent;
4680 static const bool has_infinity =
true;
4684 static const bool has_quiet_NaN =
true;
4687 static const bool has_signaling_NaN =
true;
4690 static const std::float_denorm_style has_denorm = std::denorm_present;
4695 static const bool has_denorm_loss =
true;
4698 static const bool is_bounded =
true;
4701 static const bool is_iec559 =
false;
4704 static const bool is_modulo =
false;
4708 static const bool tinyness_before =
true;
4712 static const bool traps =
true;
4717 static const int max_precision = digits10 - 1 + (-min_exponent10);
4723 static const std::float_round_style round_style = std::round_indeterminate;
4730template<
class DUMMY_TYPE>
4742 static const bool is_specialized =
true;
4747 static const int digits = 16;
4752 static const int digits10 = digits;
4758 static const int max_digits10 = digits;
4761 static const bool is_signed =
true;
4764 static const bool is_integer =
false;
4770 static const bool is_exact =
false;
4773 static const int radix = 10;
4778 static const int min_exponent = -383;
4784 static const int min_exponent10 = min_exponent;
4789 static const int max_exponent = 384;
4795 static const int max_exponent10 = max_exponent;
4798 static const bool has_infinity =
true;
4802 static const bool has_quiet_NaN =
true;
4805 static const bool has_signaling_NaN =
true;
4808 static const std::float_denorm_style has_denorm = std::denorm_present;
4813 static const bool has_denorm_loss =
true;
4816 static const bool is_iec559 =
false;
4819 static const bool is_bounded =
true;
4822 static const bool is_modulo =
false;
4826 static const bool traps =
true;
4830 static const bool tinyness_before =
true;
4835 static const int max_precision = digits10 - 1 + (-min_exponent10);
4839 static const std::float_round_style round_style = std::round_indeterminate;
4846template<
class DUMMY_TYPE>
4859 static const bool is_specialized =
true;
4864 static const int digits = 34;
4869 static const int digits10 = digits;
4875 static const int max_digits10 = digits;
4878 static const bool is_signed =
true;
4881 static const bool is_integer =
false;
4887 static const bool is_exact =
false;
4890 static const int radix = 10;
4895 static const int min_exponent = -6143;
4901 static const int min_exponent10 = min_exponent;
4906 static const int max_exponent = 6144;
4912 static const int max_exponent10 = max_exponent;
4915 static const bool has_infinity =
true;
4919 static const bool has_quiet_NaN =
true;
4922 static const bool has_signaling_NaN =
true;
4925 static const std::float_denorm_style has_denorm = std::denorm_present;
4930 static const bool has_denorm_loss =
true;
4933 static const bool is_iec559 =
false;
4936 static const bool is_bounded =
true;
4939 static const bool is_modulo =
false;
4943 static const bool traps =
true;
4947 static const bool tinyness_before =
true;
4952 static const int max_precision = digits10 - 1 + (-min_exponent10);
4956 static const std::float_round_style round_style = std::round_indeterminate;
4964template<
class DUMMY_TYPE>
4967template<
class DUMMY_TYPE>
4970template<
class DUMMY_TYPE>
4973template<
class DUMMY_TYPE>
4976template<
class DUMMY_TYPE>
4979template<
class DUMMY_TYPE>
4982template<
class DUMMY_TYPE>
4985template<
class DUMMY_TYPE>
4988template<
class DUMMY_TYPE>
4991template<
class DUMMY_TYPE>
4994template<
class DUMMY_TYPE>
4997template<
class DUMMY_TYPE>
5000template<
class DUMMY_TYPE>
5003template<
class DUMMY_TYPE>
5006template<
class DUMMY_TYPE>
5009template<
class DUMMY_TYPE>
5010const std::float_denorm_style
5013template<
class DUMMY_TYPE>
5016template<
class DUMMY_TYPE>
5019template<
class DUMMY_TYPE>
5022template<
class DUMMY_TYPE>
5025template<
class DUMMY_TYPE>
5028template<
class DUMMY_TYPE>
5031template<
class DUMMY_TYPE>
5032const std::float_round_style
5039template<
class DUMMY_TYPE>
5042template<
class DUMMY_TYPE>
5045template<
class DUMMY_TYPE>
5048template<
class DUMMY_TYPE>
5051template<
class DUMMY_TYPE>
5054template<
class DUMMY_TYPE>
5057template<
class DUMMY_TYPE>
5060template<
class DUMMY_TYPE>
5063template<
class DUMMY_TYPE>
5066template<
class DUMMY_TYPE>
5069template<
class DUMMY_TYPE>
5072template<
class DUMMY_TYPE>
5075template<
class DUMMY_TYPE>
5078template<
class DUMMY_TYPE>
5081template<
class DUMMY_TYPE>
5084template<
class DUMMY_TYPE>
5085const std::float_denorm_style
5088template<
class DUMMY_TYPE>
5091template<
class DUMMY_TYPE>
5094template<
class DUMMY_TYPE>
5097template<
class DUMMY_TYPE>
5100template<
class DUMMY_TYPE>
5103template<
class DUMMY_TYPE>
5106template<
class DUMMY_TYPE>
5107const std::float_round_style
5114template<
class DUMMY_TYPE>
5117template<
class DUMMY_TYPE>
5120template<
class DUMMY_TYPE>
5123template<
class DUMMY_TYPE>
5126template<
class DUMMY_TYPE>
5129template<
class DUMMY_TYPE>
5132template<
class DUMMY_TYPE>
5135template<
class DUMMY_TYPE>
5138template<
class DUMMY_TYPE>
5141template<
class DUMMY_TYPE>
5144template<
class DUMMY_TYPE>
5147template<
class DUMMY_TYPE>
5150template<
class DUMMY_TYPE>
5153template<
class DUMMY_TYPE>
5156template<
class DUMMY_TYPE>
5159template<
class DUMMY_TYPE>
5160const std::float_denorm_style
5163template<
class DUMMY_TYPE>
5166template<
class DUMMY_TYPE>
5169template<
class DUMMY_TYPE>
5172template<
class DUMMY_TYPE>
5175template<
class DUMMY_TYPE>
5178template<
class DUMMY_TYPE>
5181template<
class DUMMY_TYPE>
5182const std::float_round_style
5201 :
public BloombergLP::bdldfp::faux_numeric_limits<
5202 BloombergLP::bdldfp::Decimal_StandardNamespaceCanary> {
5211 :
public BloombergLP::bdldfp::faux_numeric_limits<
5212 BloombergLP::bdldfp::Decimal32> {
5259class numeric_limits<BloombergLP::
bdldfp::Decimal64>
5260 : public BloombergLP::
bdldfp::faux_numeric_limits<
5261 BloombergLP::
bdldfp::Decimal64> {
5310class numeric_limits<BloombergLP::
bdldfp::Decimal128>
5311 : public BloombergLP::
bdldfp::faux_numeric_limits<
5312 BloombergLP::
bdldfp::Decimal128> {
5376int Decimal_Type32::maxSupportedBdexVersion()
5382int Decimal_Type32::maxSupportedBdexVersion(
int )
5389Decimal_Type32::Decimal_Type32()
5391 bsl::memset(&d_value, 0,
sizeof(d_value));
5675template <
class STREAM>
5682 stream.getUint32(bidVal);
5685 d_value.d_raw = bidVal;
5688 stream.invalidate();
5692 stream.invalidate();
5713template <
class STREAM>
5719 stream.putUint32(d_value.d_raw);
5722 stream.invalidate();
5752 bsl::memset(&d_value, 0,
sizeof(d_value));
6034template <
class STREAM>
6041 stream.getUint64(bidVal);
6044 d_value.d_raw = bidVal;
6047 stream.invalidate();
6051 stream.invalidate();
6080template <
class STREAM>
6086 stream.putUint64(d_value.d_raw);
6089 stream.invalidate();
6119 bsl::memset(&d_value, 0,
sizeof(d_value));
6437template <
class STREAM>
6445 /
sizeof(
unsigned char);
6447 unsigned char *value_p =
6448 reinterpret_cast<unsigned char *
>(&bidVal);
6450#ifdef BSLS_PLATFORM_IS_BIG_ENDIAN
6451 for (
int i(0); i < len; ++i) {
6452 stream.getUint8(*(value_p + i));
6454#elif defined(BSLS_PLATFORM_IS_LITTLE_ENDIAN)
6455 for (
int i(len - 1); i >= 0; --i) {
6456 stream.getUint8(*(value_p + i));
6460 d_value.d_raw = bidVal;
6463 stream.invalidate();
6467 stream.invalidate();
6488template <
class STREAM>
6495 /
sizeof(
unsigned char);
6497 const unsigned char *value_p =
6498 reinterpret_cast<const unsigned char *
>(&d_value.d_raw);
6500#ifdef BSLS_PLATFORM_IS_BIG_ENDIAN
6501 for (
int i(0); i < len; ++i) {
6502 stream.putUint8(*(value_p + i));
6504#elif defined(BSLS_PLATFORM_IS_LITTLE_ENDIAN)
6505 for (
int i(len - 1); i >= 0; --i) {
6506 stream.putUint8(*(value_p + i));
6511 stream.invalidate();
6596 unsigned long long rhs)
6690 unsigned long long rhs)
6782 unsigned long long rhs)
6875 unsigned long long rhs)
6959#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
6960 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
6969 const char *str, bsl::size_t)
7064 unsigned long long rhs)
7171 unsigned long long rhs)
7269 unsigned long long rhs)
7361 unsigned long long rhs)
7504#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
7505 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
7514 const char *str, bsl::size_t)
7624 unsigned long long rhs)
7745 unsigned long long rhs)
7866 unsigned long long rhs)
7987 unsigned long long rhs)
8226#if defined(BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE) && \
8227 defined(BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS)
8236 const char *str, bsl::size_t)
8243template <
class HASHALG>
8247 using ::BloombergLP::bslh::hashAppend;
8251 hashAlg(&normalizedObject,
sizeof(normalizedObject));
8254template <
class HASHALG>
8258 using ::BloombergLP::bslh::hashAppend;
8263 hashAlg(&normalizedObject,
sizeof(normalizedObject));
8266template <
class HASHALG>
8270 using ::BloombergLP::bslh::hashAppend;
8275 hashAlg(&normalizedObject,
sizeof(normalizedObject));
Definition bdldfp_decimalimputil.h:238
static ValueType32 normalize(ValueType32 original)
static bool lessEqual(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2758
static ValueType64 parse64(const char *input)
Definition bdldfp_decimalimputil.h:3101
static ValueType32 parse32(const char *input)
Definition bdldfp_decimalimputil.h:3094
static bool notEqual(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2836
static bool less(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2706
Imp::ValueType64 ValueType64
Definition bdldfp_decimalimputil.h:250
static bool greater(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2732
static ValueType32 multiply(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:1670
static ValueType32 divide(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:1698
Imp::ValueType128 ValueType128
Definition bdldfp_decimalimputil.h:251
static ValueType128 parse128(const char *input)
Definition bdldfp_decimalimputil.h:3108
static ValueType32 subtract(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:1644
static bool equal(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2810
static ValueType32 negate(ValueType32 value)
Definition bdldfp_decimalimputil.h:2681
static bool greaterEqual(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:2784
static ValueType32 add(ValueType32 lhs, ValueType32 rhs)
Definition bdldfp_decimalimputil.h:1619
Imp::ValueType32 ValueType32
Definition bdldfp_decimalimputil.h:249
Definition bdldfp_decimal.h:4178
~DecimalNumGet() BSLS_KEYWORD_OVERRIDE
Destroy this object. Note that the destructor is virtual.
INPUTITERATOR iter_type
Definition bdldfp_decimal.h:4201
iter_type get(iter_type begin, iter_type end, bsl::ios_base &str, bsl::ios_base::iostate &err, Decimal64 &value) const
static const DecimalNumGet< CHARTYPE, INPUTITERATOR > & object()
static bsl::locale::id id
Definition bdldfp_decimal.h:4198
iter_type get(iter_type begin, iter_type end, bsl::ios_base &str, bsl::ios_base::iostate &err, Decimal32 &value) const
CHARTYPE char_type
Definition bdldfp_decimal.h:4200
iter_type get(iter_type begin, iter_type end, bsl::ios_base &str, bsl::ios_base::iostate &err, Decimal128 &value) const
DecimalNumGet(bsl::size_t refs=0)
virtual iter_type do_get(iter_type begin, iter_type end, bsl::ios_base &str, bsl::ios_base::iostate &err, Decimal32 &value) const
Definition bdldfp_decimal.h:4284
Definition bdldfp_decimal.h:4464
iter_type put(iter_type out, bsl::ios_base &str, char_type fill, Decimal64 value) const
iter_type put(iter_type out, bsl::ios_base &str, char_type fill, Decimal32 value) const
OUTPUTITERATOR iter_type
Definition bdldfp_decimal.h:4487
static const DecimalNumPut< CHARTYPE, OUTPUTITERATOR > & object()
virtual iter_type do_put(iter_type out, bsl::ios_base &ios_format, char_type fill, Decimal32 value) const
CHARTYPE char_type
Definition bdldfp_decimal.h:4486
~DecimalNumPut() BSLS_KEYWORD_OVERRIDE
Destroy this object. Note that the destructor is virtual.
iter_type put(iter_type out, bsl::ios_base &str, char_type fill, Decimal128 value) const
DecimalNumPut(bsl::size_t refs=0)
iter_type do_put_impl(iter_type out, bsl::ios_base &ios_format, char_type fill, DECIMAL value) const
static bsl::locale::id id
Definition bdldfp_decimal.h:4484
Definition bdldfp_decimal.h:4575
Definition bdldfp_decimal.h:3023
Decimal_Type128 & operator++()
Definition bdldfp_decimal.h:6185
Decimal_Type128 & operator/=(Decimal32 rhs)
Definition bdldfp_decimal.h:6372
Decimal_Type128()
Definition bdldfp_decimal.h:6117
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdldfp_decimal.h:6438
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdldfp_decimal.h:6489
Decimal_Type128 & operator*=(Decimal32 rhs)
Definition bdldfp_decimal.h:6314
Decimal128_Type & operator=(const Decimal128_Type &rhs)=default
static int maxSupportedBdexVersion()
Definition bdldfp_decimal.h:6104
Decimal_Type128 & operator+=(Decimal32 rhs)
Definition bdldfp_decimal.h:6199
Decimal_Type128 & operator--()
Definition bdldfp_decimal.h:6191
DecimalImpUtil::ValueType128 * data()
Return a modifiable pointer to the underlying implementation.
Definition bdldfp_decimal.h:6430
Decimal128_Type(const Decimal128_Type &original)=default
Decimal_Type128 & operator-=(Decimal32 rhs)
Definition bdldfp_decimal.h:6256
DecimalImpUtil::ValueType128 value() const
Return the value of the underlying implementation.
Definition bdldfp_decimal.h:6481
BSLMF_NESTED_TRAIT_DECLARATION(Decimal_Type128, bsl::is_trivially_copyable)
~Decimal128_Type()=default
Definition bdldfp_decimal.h:730
Decimal_Type32 & operator-=(Decimal32 rhs)
Definition bdldfp_decimal.h:5524
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdldfp_decimal.h:5676
DecimalImpUtil::ValueType32 * data()
Definition bdldfp_decimal.h:5668
Decimal_Type32 & operator--()
Definition bdldfp_decimal.h:5469
Decimal_Type32()
Definition bdldfp_decimal.h:5389
Decimal32_Type(const Decimal32_Type &original)=default
DecimalImpUtil::ValueType32 value() const
Return the value of the underlying implementation.
Definition bdldfp_decimal.h:5706
Decimal_Type32 & operator++()
Definition bdldfp_decimal.h:5464
Decimal_Type32 & operator+=(Decimal32 rhs)
Definition bdldfp_decimal.h:5476
~Decimal32_Type()=default
Decimal32_Type & operator=(const Decimal32_Type &rhs)=default
static int maxSupportedBdexVersion()
Definition bdldfp_decimal.h:5376
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdldfp_decimal.h:5714
Decimal_Type32 & operator*=(Decimal32 rhs)
Definition bdldfp_decimal.h:5572
BSLMF_NESTED_TRAIT_DECLARATION(Decimal_Type32, bsl::is_trivially_copyable)
Decimal_Type32 & operator/=(Decimal32 rhs)
Definition bdldfp_decimal.h:5620
Definition bdldfp_decimal.h:1834
Decimal_Type64 & operator*=(Decimal32 rhs)
Definition bdldfp_decimal.h:5938
Decimal_Type64 & operator+=(Decimal32 rhs)
Definition bdldfp_decimal.h:5842
Decimal_Type64 & operator/=(Decimal32 rhs)
Definition bdldfp_decimal.h:5986
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdldfp_decimal.h:6081
DecimalImpUtil::ValueType64 value() const
Return the value of the underlying implementation.
Definition bdldfp_decimal.h:6073
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdldfp_decimal.h:6035
~Decimal64_Type()=default
Decimal64_Type & operator=(const Decimal64_Type &rhs)=default
Decimal_Type64 & operator++()
Definition bdldfp_decimal.h:5830
static int maxSupportedBdexVersion()
Definition bdldfp_decimal.h:5737
BSLMF_NESTED_TRAIT_DECLARATION(Decimal_Type64, bsl::is_trivially_copyable)
Decimal_Type64()
Definition bdldfp_decimal.h:5750
Decimal64_Type(const Decimal64_Type &original)=default
Decimal_Type64 & operator--()
Definition bdldfp_decimal.h:5835
DecimalImpUtil::ValueType64 * data()
Return a modifiable pointer to the underlying implementation.
Definition bdldfp_decimal.h:6063
Decimal_Type64 & operator-=(Decimal32 rhs)
Definition bdldfp_decimal.h:5890
Definition bdldfp_decimal.h:4585
Definition bslma_allocator.h:457
virtual void deallocate(void *address)=0
virtual void * allocate(size_type size)=0
static BloombergLP::bdldfp::Decimal128 min() BSLS_KEYWORD_NOEXCEPT
static BloombergLP::bdldfp::Decimal32 min() BSLS_KEYWORD_NOEXCEPT
static BloombergLP::bdldfp::Decimal64 min() BSLS_KEYWORD_NOEXCEPT
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
#define BSLS_KEYWORD_OVERRIDE
Definition bsls_keyword.h:653
Definition bdldfp_decimal.h:712
Decimal_Type128 Decimal128
Definition bdldfp_decimal.h:719
bsl::basic_istream< CHARTYPE, TRAITS > & operator>>(bsl::basic_istream< CHARTYPE, TRAITS > &stream, Decimal32 &object)
Decimal32 operator/(Decimal32 lhs, Decimal32 rhs)
bsl::basic_ostream< CHARTYPE, TRAITS > & operator<<(bsl::basic_ostream< CHARTYPE, TRAITS > &stream, Decimal32 object)
bool operator!=(Decimal32 lhs, Decimal32 rhs)
bool operator<(Decimal32 lhs, Decimal32 rhs)
Decimal_Type32 Decimal32
Definition bdldfp_decimal.h:714
void hashAppend(HASHALG &hashAlg, const Decimal32 &object)
Decimal32 operator--(Decimal32 &value, int)
Decimal_Type64 Decimal64
Definition bdldfp_decimal.h:715
Decimal32 operator-(Decimal32 value)
Decimal32 operator*(Decimal32 lhs, Decimal32 rhs)
bool operator>(Decimal32 lhs, Decimal32 rhs)
bool operator>=(Decimal32 lhs, Decimal32 rhs)
bool operator<=(Decimal32 lhs, Decimal32 rhs)
Decimal32 operator++(Decimal32 &value, int)
Decimal32 operator+(Decimal32 value)
bool operator==(Decimal32 lhs, Decimal32 rhs)
Definition bdlb_printmethods.h:283
Definition bdldfp_decimal.h:5188
BID_UINT128 Type128
Definition bdldfp_decimalstorage.h:84
BID_UINT64 Type64
Definition bdldfp_decimalstorage.h:83
BID_UINT32 Type32
Definition bdldfp_decimalstorage.h:82
Definition bslmf_istriviallycopyable.h:329
static Allocator * allocator(Allocator *basicAllocator=0)
Definition bslma_default.h:897