8#ifndef INCLUDED_BDLAT_NULLABLEVALUEUTIL
9#define INCLUDED_BDLAT_NULLABLEVALUEUTIL
177#include <bdlscm_version.h>
212 template <
class ACCESSOR>
213 class AccessByCategoryAdapter;
222 template <
class MANIPULATOR>
223 class ManipulateByCategoryAdapter;
238 template <
class TYPE,
class ACCESSOR>
252 template <
class TYPE,
class MANIPULATOR>
254 MANIPULATOR& manipulator);
263template <
class ACCESSOR>
264class NullableValueUtil::AccessByCategoryAdapter {
269 ACCESSOR *d_accessor_p;
276 explicit AccessByCategoryAdapter(ACCESSOR *accessor);
283 template <
class VALUE_TYPE>
284 int operator()(
const VALUE_TYPE& value)
const;
293template <
class MANIPULATOR>
294class NullableValueUtil::ManipulateByCategoryAdapter {
299 MANIPULATOR *d_manipulator_p;
306 explicit ManipulateByCategoryAdapter(MANIPULATOR *manipulator);
313 template <
class VALUE_TYPE>
314 int operator()(VALUE_TYPE *value)
const;
326template <
class TYPE,
class ACCESSOR>
331#if !defined(BSLS_PLATFORM_CMP_SUN)
338 const NullableValueUtil::AccessByCategoryAdapter<ACCESSOR> adapter(
343template <
class TYPE,
class MANIPULATOR>
346 MANIPULATOR& manipulator)
348#if !defined(BSLS_PLATFORM_CMP_SUN)
356 const NullableValueUtil::ManipulateByCategoryAdapter<MANIPULATOR> adapter(
366template <
class ACCESSOR>
368NullableValueUtil::AccessByCategoryAdapter<ACCESSOR>::AccessByCategoryAdapter(
370: d_accessor_p(accessor)
375template <
class ACCESSOR>
376template <
class VALUE_TYPE>
378int NullableValueUtil::AccessByCategoryAdapter<ACCESSOR>::operator()(
379 const VALUE_TYPE& value)
const
389template <
class MANIPULATOR>
391NullableValueUtil::ManipulateByCategoryAdapter<
392 MANIPULATOR>::ManipulateByCategoryAdapter(MANIPULATOR *manipulator)
393: d_manipulator_p(manipulator)
398template <
class MANIPULATOR>
399template <
class VALUE_TYPE>
401int NullableValueUtil::ManipulateByCategoryAdapter<MANIPULATOR>::operator()(
402 VALUE_TYPE *value)
const
static int manipulateByCategory(TYPE *object, MANIPULATOR &manipulator)
Definition bdlat_typecategory.h:1414
static int accessByCategory(const TYPE &object, ACCESSOR &accessor)
Definition bdlat_typecategory.h:1455
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#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
bool isNull(const TYPE &object)
int manipulateValue(TYPE *object, MANIPULATOR &manipulator)
int accessValue(const TYPE &object, ACCESSOR &accessor)
bdlat_TypeCategory::Value select(const TYPE &object)
Definition bdlat_arrayutil.h:198
Definition bdlat_nullablevalueutil.h:200
static int manipulateValueByCategory(TYPE *object, MANIPULATOR &manipulator)
Definition bdlat_nullablevalueutil.h:345
static int accessValueByCategory(const TYPE &object, ACCESSOR &accessor)
Definition bdlat_nullablevalueutil.h:328
Definition bdlat_nullablevaluefunctions.h:649
@ e_NULLABLE_VALUE_CATEGORY
Definition bdlat_typecategory.h:1052