8#ifndef INCLUDED_BALJSN_PARSERUTIL
9#define INCLUDED_BALJSN_PARSERUTIL
107#include <balscm_version.h>
124#include <bsl_limits.h>
125#include <bsl_cstring.h>
126#include <bsl_string.h>
127#include <bsl_string_view.h>
128#include <bsl_vector.h>
159 template <
class TYPE>
160 static int getDateAndTimeValue(TYPE *value,
175 template <
class TYPE>
188 template <
class TYPE>
189 static int getUnsignedIntegralValue(TYPE *value,
227#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
238#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
252 static int getValue(
unsigned char *value,
254 static int getValue(
signed char *value,
258 static int getValue(
unsigned short *value,
262 static int getValue(
unsigned int *value,
266 static int getValue(
unsigned long *value,
268 static int getValue(
long long *value,
270 static int getValue(
unsigned long long *value,
305 static int getValue(std::string *value,
307#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
308 static int getValue(std::pmr::string *value,
348#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
361int ParserUtil::getUnsignedIntegralValue(TYPE *value,
366 if (0 == data.length()) {
372 int rc = getUint64(&tmp, data);
382 *value =
static_cast<TYPE
>(tmp);
391 if (0 ==
data.length()) {
396 if (
'-' == data[0]) {
398 data.remove_prefix(1);
406 const int rc = getUint64(&tmp, data);
414 if (isNegative && tmp <= maxValue + 1) {
415 *value =
static_cast<TYPE
>(tmp * -1);
417 else if (tmp <= maxValue) {
418 *value =
static_cast<TYPE
>(tmp);
428int ParserUtil::getDateAndTimeValue(TYPE *value,
431 enum { k_STRING_LENGTH_WITH_QUOTES = 2 };
433 if (
data.length() < k_STRING_LENGTH_WITH_QUOTES
434 ||
'"' != *
data.begin()
435 ||
'"' != *(
data.end() - 1)) {
442 static_cast<int>(
data.length() - k_STRING_LENGTH_WITH_QUOTES));
450 const int rc = getIntegralValue(&tmp, data);
460 return getUnsignedIntegralValue(value, data);
466 return getValue((
char *) value, data);
472 return getIntegralValue(value, data);
478 return getUnsignedIntegralValue(value, data);
484 return getIntegralValue(value, data);
490 return getUnsignedIntegralValue(value, data);
497 return getIntegralValue(value, data);
504 return getUnsignedIntegralValue(value, data);
511 return getIntegralValue(value, data);
518 return getUnsignedIntegralValue(value, data);
525 const int rc =
getValue(&tmp, data);
527 *value =
static_cast<float>(tmp);
550#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
564 return getDateAndTimeValue(value, data);
570 return getDateAndTimeValue(value, data);
576 return getDateAndTimeValue(value, data);
582 return getDateAndTimeValue(value, data);
588 return getDateAndTimeValue(value, data);
594 return getDateAndTimeValue(value, data);
600 return getDateAndTimeValue(value, data);
606 return getDateAndTimeValue(value, data);
613 return getDateAndTimeValue(value, data);
Definition bdlb_variant.h:2592
Definition bdldfp_decimal.h:1890
Definition bdlt_datetz.h:161
Definition bdlt_date.h:294
Definition bdlt_datetimetz.h:308
Definition bdlt_datetime.h:330
Definition bdlt_timetz.h:190
Definition bdlt_time.h:195
Definition bslstl_stringview.h:471
Definition bslstl_string.h:1252
Definition bslstl_vector.h:1120
#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
BSLS_KEYWORD_CONSTEXPR CONTAINER::value_type * data(CONTAINER &container)
Definition bslstl_iterator.h:1325
Definition baljsn_parserutil.h:145
static int getValue(bool *value, const bsl::string_view &data)
static int getValue(bdldfp::Decimal64 *value, const bsl::string_view &data)
bdlb::Variant2< bdlt::Date, bdlt::DateTz > DateOrDateTz
Definition baljsn_parserutil.h:206
static int getValue(TimeOrTimeTz *value, const bsl::string_view &data)
static int getValue(DatetimeOrDatetimeTz *value, const bsl::string_view &data)
static int getValue(bsl::vector< char > *value, const bsl::string_view &data)
static int getUnquotedString(std::string *value, const bsl::string_view &data)
static int getQuotedString(bsl::string *value, const bsl::string_view &data)
Definition baljsn_parserutil.h:329
static int getValue(double *value, const bsl::string_view &data)
static bool stripQuotes(bsl::string_view *str)
bdlb::Variant2< bdlt::Datetime, bdlt::DatetimeTz > DatetimeOrDatetimeTz
Definition baljsn_parserutil.h:215
static int getUnquotedString(bsl::string *value, const bsl::string_view &data)
bdlb::Variant2< bdlt::Time, bdlt::TimeTz > TimeOrTimeTz
Definition baljsn_parserutil.h:210
@ e_ACCEPT_CAPITAL_UNICODE_ESCAPE
Definition bdljsn_stringutil.h:243
static int readString(bsl::string *value, const bsl::string_view &string, int flags=e_NONE)
Definition bdljsn_stringutil.h:341
static int parse(bsls::TimeInterval *result, const char *string, ssize_t length)
unsigned long long Uint64
Definition bsls_types.h:139