8#ifndef INCLUDED_BALJSN_JSONFORMATTER
9#define INCLUDED_BALJSN_JSONFORMATTER
225#include <balscm_version.h>
254#include <bsl_cstddef.h>
255#include <bsl_limits.h>
256#include <bsl_ostream.h>
257#include <bsl_sstream.h>
258#include <bsl_stack.h>
259#include <bsl_string.h>
260#include <bsl_string_view.h>
261#include <bsl_utility.h>
290 static bsl::ostream&
print(bsl::ostream& stream,
293 int spacesPerLevel = 4);
318#ifdef BSLS_ASSERT_SAFE_IS_ACTIVE
319 template <
class TYPE>
320 static int expectedReturnPutValue(
const TYPE& value,
323 static int expectedReturnPutValue(
const char *value,
326 template <
class TYPE>
327 static int expectedReturnFloatingPoint(
const TYPE& value,
331 template <
class TYPE>
336 template <
class TYPE>
341 template <
class TYPE>
452 template <
class TYPE>
484#ifdef BSLS_ASSERT_SAFE_IS_ACTIVE
496int JsonFormatter_Util::expectedReturnFloatingPoint(
498 const EncoderOptions *options)
503 return options && options->encodeInfAndNaNAsStrings() ? 0 : -1;
514int JsonFormatter_Util::expectedReturnPutValue(
const float& value,
515 const EncoderOptions *options)
517 return expectedReturnFloatingPoint(value, options);
522int JsonFormatter_Util::expectedReturnPutValue(
const double& value,
523 const EncoderOptions *options)
525 return expectedReturnFloatingPoint(value, options);
529int JsonFormatter_Util::expectedReturnPutValue(
const char *value,
531 const EncoderOptions *options)
539int JsonFormatter_Util::expectedReturnPutValue(
const bsl::string& value,
541 const EncoderOptions *options)
556 switch (classification) {
605 char buffer[bufferSize];
747 static const DEC64 INF_POS = bsl::numeric_limits<DEC64>::infinity();
748 static const DEC64 INF_NEG = -INF_POS;
755 if (INF_POS == value) { json->
makeString(
"+inf");
756 }
else if (INF_NEG == value) { json->
makeString(
"-inf");
775: d_allocator(allocator)
776, d_stack(
bslma::AllocatorUtil::adapt(allocator))
794#ifdef BSLS_ASSERT_SAFE_IS_ACTIVE
795 const int expRc = JsonFormatter_Util::expectedReturnPutValue(value,
Definition baljsn_encoderoptions.h:290
bool encodeInfAndNaNAsStrings() const
Definition baljsn_encoderoptions.h:1061
int datetimeFractionalSecondPrecision() const
Definition baljsn_encoderoptions.h:1067
Definition bdldfp_decimal.h:1890
JsonArray & pushBack(const Json &json)
Definition bdljsn_json.h:3561
Json & back()
Definition bdljsn_json.h:3446
Definition bdljsn_jsonnumber.h:412
Definition bdljsn_json.h:1461
JsonNumber & makeNumber()
Definition bdljsn_json.h:4511
bool isArray() const
Definition bdljsn_json.h:5058
void makeString(const char *string)
Definition bdljsn_json.h:4551
JsonArray & theArray()
Definition bdljsn_json.h:5094
bool isNull() const
Definition bdljsn_json.h:5070
Definition bdlt_datetz.h:161
Definition bdlt_date.h:294
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 bslma_bslallocator.h:588
Definition bslstl_stringview.h:471
Definition bslstl_string.h:1252
size_type length() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_string.h:7301
CHAR_TYPE * data() BSLS_KEYWORD_NOEXCEPT
Definition bslstl_string.h:7177
Definition bslstl_pair.h:1280
Definition bslstl_stack.h:412
#define BSLA_FALLTHROUGH
Definition bsla_fallthrough.h:188
#define BSLA_MAYBE_UNUSED
Definition bsla_maybeunused.h:239
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_ASSERT_OPT(X)
Definition bsls_assert.h:2045
#define BSLS_ASSERT_INVOKE_NORETURN(X)
Definition bsls_assert.h:2101
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition baljsn_convertfromjsonoptions.h:112
bsl::ostream & operator<<(bsl::ostream &stream, const DatumDecoderOptions &rhs)
Definition baljsn_encoder_testtypes.h:76
static const char * floatingPointSpecialAsString(bdlb::Float::FineClassification classification)
Definition baljsn_printutil.h:357
@ k_NAN
Definition bdlb_float.h:230
@ k_INFINITE
Definition bdlb_float.h:229
static FineClassification classifyFine(float number)
FineClassification
Definition bdlb_float.h:244
@ k_NEGATIVE_NORMAL
Definition bdlb_float.h:253
@ k_POSITIVE_NORMAL
Definition bdlb_float.h:252
@ k_NEGATIVE
Definition bdlb_float.h:245
@ k_SNAN
Definition bdlb_float.h:251
@ k_POSITIVE_SUBNORMAL
Definition bdlb_float.h:254
@ k_NEGATIVE_ZERO
Definition bdlb_float.h:257
@ k_NEGATIVE_SUBNORMAL
Definition bdlb_float.h:255
@ k_POSITIVE_ZERO
Definition bdlb_float.h:256
@ k_NEGATIVE_INFINITY
Definition bdlb_float.h:249
@ k_SIGNALING
Definition bdlb_float.h:246
@ k_QNAN
Definition bdlb_float.h:250
@ k_POSITIVE_INFINITY
Definition bdlb_float.h:248
static Classification classify(float number)
static bool isValid(const char *string)
Definition bdlde_utf8util.h:1069
static int classify(Decimal32 x)
@ 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
static bsl::enable_if<!IsDerivedFromBslAllocator< t_ALLOC >::value, t_ALLOC >::type adapt(const t_ALLOC &from)
Definition bslma_allocatorutil.h:871