8#ifndef INCLUDED_BDLAT_ARRAYUTIL
9#define INCLUDED_BDLAT_ARRAYUTIL
184#include <bdlscm_version.h>
195#include <bsl_cstddef.h>
220 template <
class ACCESSOR>
221 class AccessByCategoryAdapter;
230 template <
class MANIPULATOR>
231 class ManipulateByCategoryAdapter;
246 template <
class TYPE,
class ACCESSOR>
262 template <
class TYPE,
class MANIPULATOR>
264 MANIPULATOR& manipulator,
274template <
class ACCESSOR>
275class ArrayUtil::AccessByCategoryAdapter {
280 ACCESSOR *d_accessor_p;
287 explicit AccessByCategoryAdapter(ACCESSOR *accessor);
294 template <
class VALUE_TYPE>
295 int operator()(
const VALUE_TYPE& value)
const;
304template <
class MANIPULATOR>
305class ArrayUtil::ManipulateByCategoryAdapter {
310 MANIPULATOR *d_manipulator_p;
317 explicit ManipulateByCategoryAdapter(MANIPULATOR *manipulator);
324 template <
class VALUE_TYPE>
325 int operator()(VALUE_TYPE *value)
const;
337template <
class TYPE,
class ACCESSOR>
343#if !defined(BSLS_PLATFORM_CMP_SUN)
352 const AccessByCategoryAdapter<ACCESSOR> adapter(&accessor);
356template <
class TYPE,
class MANIPULATOR>
359 MANIPULATOR& manipulator,
362#if !defined(BSLS_PLATFORM_CMP_SUN)
372 const ManipulateByCategoryAdapter<MANIPULATOR> adapter(&manipulator);
381template <
class ACCESSOR>
383ArrayUtil::AccessByCategoryAdapter<ACCESSOR>::AccessByCategoryAdapter(
385: d_accessor_p(accessor)
390template <
class ACCESSOR>
391template <
class VALUE_TYPE>
393int ArrayUtil::AccessByCategoryAdapter<ACCESSOR>::operator()(
394 const VALUE_TYPE& value)
const
404template <
class MANIPULATOR>
406ArrayUtil::ManipulateByCategoryAdapter<
407 MANIPULATOR>::ManipulateByCategoryAdapter(MANIPULATOR *manipulator)
408: d_manipulator_p(manipulator)
412template <
class MANIPULATOR>
413template <
class VALUE_TYPE>
415int ArrayUtil::ManipulateByCategoryAdapter<MANIPULATOR>::operator()(
416 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
int manipulateElement(TYPE *array, MANIPULATOR &manipulator, int index)
bsl::size_t size(const TYPE &array)
Return the number of elements in the specified array.
int accessElement(const TYPE &array, ACCESSOR &accessor, int index)
bdlat_TypeCategory::Value select(const TYPE &object)
Definition bdlat_arrayutil.h:198
Definition bdlat_arrayutil.h:208
static int manipulateElementByCategory(TYPE *array, MANIPULATOR &manipulator, int index)
Definition bdlat_arrayutil.h:358
static int accessElementByCategory(const TYPE &array, ACCESSOR &accessor, int index)
Definition bdlat_arrayutil.h:339
Definition bdlat_arrayfunctions.h:762
@ e_ARRAY_CATEGORY
Definition bdlat_typecategory.h:1048