8#ifndef INCLUDED_BALJSN_PRINTUTIL
9#define INCLUDED_BALJSN_PRINTUTIL
120#include <balscm_version.h>
141#include <bsl_c_stdio.h>
142#include <bsl_cmath.h>
143#include <bsl_iomanip.h>
145#include <bsl_limits.h>
146#include <bsl_ostream.h>
147#include <bsl_string.h>
148#include <bsl_string_view.h>
170 template <
class TYPE>
193 template <
class TYPE>
212 template <
class TYPE>
242 unsigned short value,
260 unsigned long long value,
360 const char *specialAsString =
366 return specialAsString;
376 switch (classification) {
391 const int precision = maxStreamPrecision<TYPE>(options);
393 if (0 == precision) {
395 char buffer[NumFmt::ToCharsMaxLength<TYPE>::k_VALUE];
397 const char *
const endPtr = NumFmt::toChars(buffer,
398 buffer +
sizeof buffer,
402 const size_t len = endPtr - buffer;
404 stream.write(buffer, len);
407 const int k_SIZE = 32;
409#if defined(BSLS_PLATFORM_CMP_MSVC)
410#define snprintf _snprintf
412 const int len = snprintf(buffer,
417#if defined(BSLS_PLATFORM_CMP_MSVC)
420 stream.write(buffer, len);
446 stream << (value ?
"true" :
"false");
491 stream << static_cast<int>(value);
497 unsigned short value,
524 unsigned long long value,
560 signed char tmp(value);
562 stream << static_cast<int>(tmp);
571 stream << static_cast<int>(value);
612 stream <<
'"' << value <<
'"';
650 const DateOrDateTz& value,
658 const DatetimeOrDatetimeTz& value,
659 const EncoderOptions *options)
Definition baljsn_encoderoptions.h:290
bool encodeInfAndNaNAsStrings() const
Definition baljsn_encoderoptions.h:1061
int maxFloatPrecision() const
Definition baljsn_encoderoptions.h:1073
int maxDoublePrecision() const
Definition baljsn_encoderoptions.h:1079
int datetimeFractionalSecondPrecision() const
Definition baljsn_encoderoptions.h:1067
bool escapeForwardSlash() const
Return the value of the "EscapeForwardSlash" attribute of this object.
Definition baljsn_encoderoptions.h:1091
Definition bdlb_variant.h:2592
Definition bdldfp_decimal.h:1890
Definition bdlt_datetz.h:161
Definition bdlt_date.h:294
Definition bdlt_datetimeinterval.h:201
Definition bdlt_datetimetz.h:308
Definition bdlt_datetime.h:330
Definition bdlt_iso8601utilconfiguration.h:224
void setFractionalSecondPrecision(int value)
Definition bdlt_timetz.h:190
Definition bdlt_time.h:195
Definition bslstl_stringview.h:471
#define BSLA_FALLTHROUGH
Definition bsla_fallthrough.h:188
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition baljsn_convertfromjsonoptions.h:112
Definition baljsn_printutil.h:161
bdlb::Variant2< bdlt::Time, bdlt::TimeTz > TimeOrTimeTz
Definition baljsn_printutil.h:182
static int printString(bsl::ostream &stream, const bsl::string_view &value, const EncoderOptions *options=0)
Definition baljsn_printutil.h:428
static int printDateAndTime(bsl::ostream &stream, const TYPE &value, const EncoderOptions *options)
Definition baljsn_printutil.h:337
bdlb::Variant2< bdlt::Datetime, bdlt::DatetimeTz > DatetimeOrDatetimeTz
Definition baljsn_printutil.h:187
static int printValue(bsl::ostream &stream, bdldfp::Decimal64 value, const EncoderOptions *options=0)
static int printFloatingPoint(bsl::ostream &stream, TYPE value, const EncoderOptions *options)
Definition baljsn_printutil.h:370
static int printValue(bsl::ostream &stream, const DatetimeOrDatetimeTz &value, const EncoderOptions *options=0)
bdlb::Variant2< bdlt::Date, bdlt::DateTz > DateOrDateTz
Definition baljsn_printutil.h:178
static const char * floatingPointSpecialAsString(bdlb::Float::FineClassification classification)
Definition baljsn_printutil.h:357
static int printValue(bsl::ostream &stream, bool value, const EncoderOptions *options=0)
Definition baljsn_printutil.h:442
static int printValue(bsl::ostream &stream, const DateOrDateTz &value, const EncoderOptions *options=0)
static FineClassification classifyFine(float number)
FineClassification
Definition bdlb_float.h:244
@ k_SNAN
Definition bdlb_float.h:251
@ k_NEGATIVE_INFINITY
Definition bdlb_float.h:249
@ k_QNAN
Definition bdlb_float.h:250
@ k_POSITIVE_INFINITY
Definition bdlb_float.h:248
static int writeString(bsl::ostream &stream, const bsl::string_view &string, int flags=e_NONE)
Flags
Definition bdljsn_stringutil.h:241
@ e_NONE
Definition bdljsn_stringutil.h:242
@ e_NO_ESCAPING_FORWARD_SLASH
Definition bdljsn_stringutil.h:244
@ k_MAX_STRLEN
Definition bdlt_iso8601util.h:779
static int generate(char *buffer, ssize_t bufferLength, const bsls::TimeInterval &object)
Definition bdlt_iso8601util.h:2017