8#ifndef INCLUDED_BDLAT_NULLABLEVALUEUTIL
9#define INCLUDED_BDLAT_NULLABLEVALUEUTIL
176#include <bdlscm_version.h>
209 template <
class ACCESSOR>
210 class AccessByCategoryAdapter;
219 template <
class MANIPULATOR>
220 class ManipulateByCategoryAdapter;
234 template <
class TYPE,
class ACCESSOR>
247 template <
class TYPE,
class MANIPULATOR>
249 MANIPULATOR& manipulator);
258template <
class ACCESSOR>
259class NullableValueUtil::AccessByCategoryAdapter {
264 ACCESSOR *d_accessor_p;
271 explicit AccessByCategoryAdapter(ACCESSOR *accessor);
278 template <
class VALUE_TYPE>
279 int operator()(
const VALUE_TYPE& value)
const;
288template <
class MANIPULATOR>
289class NullableValueUtil::ManipulateByCategoryAdapter {
294 MANIPULATOR *d_manipulator_p;
301 explicit ManipulateByCategoryAdapter(MANIPULATOR *manipulator);
308 template <
class VALUE_TYPE>
309 int operator()(VALUE_TYPE *value)
const;
321template <
class TYPE,
class ACCESSOR>
326#if !defined(BSLS_PLATFORM_CMP_SUN)
333 const NullableValueUtil::AccessByCategoryAdapter<ACCESSOR> adapter(
338template <
class TYPE,
class MANIPULATOR>
341 MANIPULATOR& manipulator)
343#if !defined(BSLS_PLATFORM_CMP_SUN)
351 const NullableValueUtil::ManipulateByCategoryAdapter<MANIPULATOR> adapter(
361template <
class ACCESSOR>
363NullableValueUtil::AccessByCategoryAdapter<ACCESSOR>::AccessByCategoryAdapter(
365: d_accessor_p(accessor)
370template <
class ACCESSOR>
371template <
class VALUE_TYPE>
373int NullableValueUtil::AccessByCategoryAdapter<ACCESSOR>::operator()(
374 const VALUE_TYPE& value)
const
384template <
class MANIPULATOR>
386NullableValueUtil::ManipulateByCategoryAdapter<
387 MANIPULATOR>::ManipulateByCategoryAdapter(MANIPULATOR *manipulator)
388: d_manipulator_p(manipulator)
393template <
class MANIPULATOR>
394template <
class VALUE_TYPE>
396int NullableValueUtil::ManipulateByCategoryAdapter<MANIPULATOR>::operator()(
397 VALUE_TYPE *value)
const
static int manipulateByCategory(TYPE *object, MANIPULATOR &manipulator)
Definition bdlat_typecategory.h:1404
static int accessByCategory(const TYPE &object, ACCESSOR &accessor)
Definition bdlat_typecategory.h:1444
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:229
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
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:197
static int manipulateValueByCategory(TYPE *object, MANIPULATOR &manipulator)
Definition bdlat_nullablevalueutil.h:340
static int accessValueByCategory(const TYPE &object, ACCESSOR &accessor)
Definition bdlat_nullablevalueutil.h:323
Definition bdlat_nullablevaluefunctions.h:636
@ e_NULLABLE_VALUE_CATEGORY
Definition bdlat_typecategory.h:1050