Quick Links:

bal | bbl | bdl | bsl

Classes | Defines

Component bdlat_typetraits
[Package bdlat]

Provide compile-time traits for generated types. More...

Classes

struct  bdlat_IsBasicChoice< TYPE >
struct  bdlat_IsBasicSequence< TYPE >
struct  bdlat_IsBasicEnumeration< TYPE >
struct  bdlat_IsBasicCustomizedType< TYPE >
struct  bdlat_TypeTraitBasicChoice
struct  bdlat_TypeTraitBasicSequence
struct  bdlat_TypeTraitBasicEnumeration
struct  bdlat_TypeTraitBasicCustomizedType

Defines

#define BDLAT_DECL_CHOICE_TRAITS(ClassName)
#define BDLAT_DECL_CHOICE_WITH_ALLOCATOR_TRAITS(ClassName)
#define BDLAT_DECL_CHOICE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
#define BDLAT_DECL_CHOICE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
#define BDLAT_DECL_ENUMERATION_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)

Detailed Description

Outline
Purpose:
Provide compile-time traits for generated types.
Classes:
bdlat_IsBasicChoice<TYPE> true for generated "choice" types
bdlat_IsBasicSequence<TYPE> true for generated "sequence" types
bdlat_IsBasicEnumeration<TYPE> true for generated "enumeration" types
bdlat_BasicEnumerationWrapper<TYPE> characteristics of enumeration type
bdlat_IsBasicCustomizedType<TYPE> true for generated "customized" types
Macros:
BDLAT_DECL_CHOICE_TRAITS(ClassName) BDLAT_DECL_CHOICE_WITH_ALLOCATOR_TRAITS(ClassName) BDLAT_DECL_CHOICE_WITH_BITWISEMOVEABLE_TRAITS(ClassName) BDLAT_DECL_CHOICE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName) BDLAT_DECL_SEQUENCE_TRAITS(ClassName) BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_TRAITS(ClassName) BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName) BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName) BDLAT_DECL_ENUMERATION_TRAITS(ClassName) BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS(ClassName) BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_TRAITS(ClassName) BDLAT_DECL_CUSTOMIZEDTYPE_WITH_BITWISEMOVEABLE_TRAITS(ClassName) BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
See also:
Description:
This component provides compile-time traits that pertain to generated types. The four traits provided, bdlat_IsBasicChoice, bdlat_IsBasicSequence, bdlat_IsBasicEnumeration, bdlat_IsBasicCustomizedType are used for generated "choice" types, "sequence" types, "enumeration", and "customized type" types respectively.
Usage:
This component is intended to be used by components generated using the bas_codegen.pl tool.

Define Documentation

#define BDLAT_DECL_CHOICE_TRAITS (   ClassName  ) 
Value:
template <>                                                               \
    struct bdlat_IsBasicChoice<ClassName> : bsl::true_type { };               \
    namespace bdlb {                                                          \
        template <>                                                           \
        struct HasPrintMethod<ClassName> : bsl::true_type { };                \
    }
#define BDLAT_DECL_CHOICE_WITH_ALLOCATOR_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    BDLAT_DECL_CHOICE_TRAITS(ClassName)
#define BDLAT_DECL_CHOICE_WITH_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_CHOICE_TRAITS(ClassName)
#define BDLAT_DECL_CHOICE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_CHOICE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_TRAITS (   ClassName  ) 
Value:
template <>                                                               \
    struct bdlat_IsBasicSequence<ClassName> : bsl::true_type { };             \
    namespace bdlb {                                                          \
        template <>                                                           \
        struct HasPrintMethod<ClassName> : bsl::true_type { };                \
    }
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    BDLAT_DECL_SEQUENCE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_SEQUENCE_TRAITS(ClassName)
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_SEQUENCE_TRAITS(ClassName)
#define BDLAT_DECL_ENUMERATION_TRAITS (   ClassName  ) 
Value:
namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName::Value> : bsl::true_type { };      \
    }                                                                         \
    template <>                                                               \
    struct bdlat_IsBasicEnumeration<ClassName::Value> : bsl::true_type { };   \
    template <>                                                               \
    struct bdlat_BasicEnumerationWrapper<ClassName::Value> : ClassName {      \
        typedef ClassName Wrapper;                                            \
    };
#define BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS (   ClassName  ) 
Value:
template <>                                                               \
    struct bdlat_IsBasicCustomizedType<ClassName> : bsl::true_type { };       \
    namespace bdlb {                                                          \
        template <>                                                           \
        struct HasPrintMethod<ClassName> : bsl::true_type { };                \
    }
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS(ClassName)
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS (   ClassName  ) 
Value:
namespace bslma {                                                         \
        template <>                                                           \
        struct UsesBslmaAllocator<ClassName> : bsl::true_type { };            \
    }                                                                         \
    namespace bslmf {                                                         \
        template <>                                                           \
        struct IsBitwiseMoveable<ClassName> : bsl::true_type { };             \
    }                                                                         \
    BDLAT_DECL_CUSTOMIZEDTYPE_TRAITS(ClassName)