13#ifndef IOX2_SERVICE_BUILDER_INTERNAL_HPP
14#define IOX2_SERVICE_BUILDER_INTERNAL_HPP
31template <
typename Payload,
typename =
void>
34template <
typename Payload>
37template <
typename Payload,
typename =
void>
40template <
typename Payload>
44template <
typename Payload>
47template <
typename Payload>
52template <
typename Payload>
59template <
typename Payload>
64template <
typename Payload>
69template <
typename Payload>
75template <
typename Payload>
82template <
typename PayloadType>
85 "A type must not define both an iox2::TypeNameSpecialization and an IOX2_TYPE_NAME "
86 "member. Choose exactly one source for the type name.");
91template <
typename PayloadType>
96template <
typename PayloadType>
103 snprintf(&type_name[0],
105 "iceoryx2_bb_container::string::static_string::StaticString<%llu>",
106 static_cast<long long unsigned int>(PayloadType::capacity()));
110template <
typename PayloadType>
117 snprintf(&type_name[0],
119 "iceoryx2_bb_container::vector::static_vec::StaticVec<%s, %llu>",
120 get_type_name<typename PayloadType::ValueType>().unchecked_access().c_str(),
121 static_cast<long long unsigned int>(PayloadType::capacity()));
126template <
typename PayloadType>
128 if (std::is_same<PayloadType, void>::value) {
131 if (std::is_same<PayloadType, uint8_t>::value) {
134 if (std::is_same<PayloadType, uint16_t>::value) {
137 if (std::is_same<PayloadType, uint32_t>::value) {
140 if (std::is_same<PayloadType, uint64_t>::value) {
143 if (std::is_same<PayloadType, int8_t>::value) {
146 if (std::is_same<PayloadType, int16_t>::value) {
149 if (std::is_same<PayloadType, int32_t>::value) {
152 if (std::is_same<PayloadType, int64_t>::value) {
155 if (std::is_same<PayloadType, float>::value) {
158 if (std::is_same<PayloadType, double>::value) {
167 snprintf(&type_name[0],
176template <
typename PayloadType>
177auto get_type_name_impl() -> internal::FromSliceWithInnerPayloadTypeNameMember<PayloadType> {
181template <
typename PayloadType>
182auto get_type_name_impl() -> internal::FromSliceWithoutInnerPayloadTypeNameMember<PayloadType> {
183 return get_type_name_impl<typename PayloadType::ValueType>();
186template <
typename PayloadType>
188 return get_type_name_impl<PayloadType>();
static auto from_utf8(char const (&utf8_str)[M]) noexcept -> bb::Optional< StaticString >
static constexpr auto capacity() noexcept -> SizeType
static auto from_utf8_null_terminated_unchecked(char const *utf8_str) -> bb::Optional< StaticString >
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&iox2::bb::IsStaticVector< Payload >::value, TypeName > FromStaticVector
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&HasPayloadTypeNameMember< Payload >::value, TypeName > FromPayloadTypeNameMember
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&!HasPayloadTypeNameMember< Payload >::value &&bb::IsSlice< Payload >::VALUE &&HasPayloadTypeNameMember< typename Payload::ValueType >::value, TypeName > FromSliceWithInnerPayloadTypeNameMember
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&!HasPayloadTypeNameMember< Payload >::value &&bb::IsSlice< Payload >::VALUE &&!HasPayloadTypeNameMember< typename Payload::ValueType >::value, TypeName > FromSliceWithoutInnerPayloadTypeNameMember
auto get_type_name_impl() -> internal::FromPayloadTypeNameSpecialization< PayloadType >
std::enable_if_t< HasPayloadTypeNameSpecialization< Payload >::value, TypeName > FromPayloadTypeNameSpecialization
auto get_type_name() -> TypeName
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&iox2::bb::IsStaticString< Payload >::value, TypeName > FromStaticString
std::enable_if_t<!HasPayloadTypeNameSpecialization< Payload >::value &&!HasPayloadTypeNameMember< Payload >::value &&!bb::IsSlice< Payload >::VALUE &&!iox2::bb::IsStaticVector< Payload >::value &&!iox2::bb::IsStaticString< Payload >::value, TypeName > FromNonSlice
iox2::bb::StaticString< IOX2_TYPE_NAME_LENGTH > TypeName