BDE 4.39.x Production Release
Loading...
Searching...
No Matches
baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER > Class Template Reference

#include <baljsn_encodeimplutil.h>

Detailed Description

template<class FORMATTER>
class baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >

This component-private class provides a function object that closes over the formatter, logStream, and options parameters that are shared between all encoding operations provided in this component. The function-call operator of this class provides an overload set that accepts an "element" object that satisfies one of the bdlat type-category concepts, and an optional bdlat_TypeCategory tag type that corresponds to the element's bdlat type category. Each function-call-operator overload encodes a JSON representation of the specified selection to the formatter supplied on construction.

See baljsn_encodeimplutil

Public Member Functions

 EncodeImplUtil_ElementDispatcher (FORMATTER *formatter, bsl::ostream *logStream, bool isNextElementFirst, const EncoderOptions &options)
 
int operator() (const bsl::vector< char > &element, bdlat_TypeCategory::Array category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::Array category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::Choice category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::CustomizedType category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::DynamicType category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::Enumeration category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::NullableValue category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::Sequence category)
 
template<class TYPE >
int operator() (const TYPE &element, bdlat_TypeCategory::Simple category)
 
template<class TYPE >
int operator() (const TYPE &, bslmf::Nil)
 
bool isNextElementFirst () const
 

Constructor & Destructor Documentation

◆ EncodeImplUtil_ElementDispatcher()

template<class FORMATTER >
baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::EncodeImplUtil_ElementDispatcher ( FORMATTER *  formatter,
bsl::ostream *  logStream,
bool  isNextElementFirst,
const EncoderOptions options 
)
inline

Construct an EncodeImplUtil_ElementDispatcher object having the specified formatter, logStream, isNextElementFirst, and options attributes.

Member Function Documentation

◆ isNextElementFirst()

template<class FORMATTER >
bool baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::isNextElementFirst ( ) const
inline

Return the value of the isNextElementFirst attribute of this object.

◆ operator()() [1/10]

template<class FORMATTER >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const bsl::vector< char > &  element,
bdlat_TypeCategory::Array  category 
)
inline

Encode the JSON representation of the specified value to the JSON formatter attribute of this object, according to the specified formattingMode. If the representation contains no text and the specified isFirstElement is true, load the value true into the specified isNextElementFirst, and the value false otherwise. If isFirstElement is true, then the representation of the value contains no leading sequence delimiter, and does contain such a delimiter otherwise. The options attribute of this object configures aspects of the JSON representation of the value. If this operation is not successful, load an unspecified, human-readable description of the error condition to the logStream attribute of this object. Return 0 on success, and a non-zero value otherwise.

Precondition
The behavior is undefined unless the specified TYPE satisfies both the static and dynamic requirements of the specified category bdlat type-category concept. See baljsn_encoderoptions for a description of the effects, if any, of each option in the options on the JSON representation of the value. See the package-level documentation of bdlat for an introduction to the requirements of bdlat type-category concepts.

◆ operator()() [2/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  ,
bslmf::Nil   
)

The behavior of this function is undefined.

◆ operator()() [3/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::Array  category 
)

◆ operator()() [4/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::Choice  category 
)

◆ operator()() [5/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::CustomizedType  category 
)

◆ operator()() [6/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::DynamicType  category 
)

◆ operator()() [7/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::Enumeration  category 
)

◆ operator()() [8/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::NullableValue  category 
)

◆ operator()() [9/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::Sequence  category 
)

◆ operator()() [10/10]

template<class FORMATTER >
template<class TYPE >
int baljsn::EncodeImplUtil_ElementDispatcher< FORMATTER >::operator() ( const TYPE &  element,
bdlat_TypeCategory::Simple  category 
)

The documentation for this class was generated from the following file: