47template<
typename Type>
50ONIXS_ICEBOE_FORCEINLINE
54 return static_cast<void*
>(ptr);
59template <
typename Type>
62ONIXS_ICEBOE_FORCEINLINE
66 return static_cast<const void*
>(ptr);
70template <
typename Type>
73ONIXS_ICEBOE_FORCEINLINE
77 return const_cast<void*
>(
static_cast<const void*
>(ptr));
82template<
typename Type>
85ONIXS_ICEBOE_FORCEINLINE
94template<
typename Type>
97ONIXS_ICEBOE_FORCEINLINE
106template <
typename Type>
109ONIXS_ICEBOE_FORCEINLINE
113 return reinterpret_cast<Type*
>(
toByteBlock(pointer) + distance);
119template<
typename Type>
122ONIXS_ICEBOE_FORCEINLINE
126 return reinterpret_cast<Type*
>(
toByteBlock(pointer) - distance);
131template<
typename Left,
typename Right>
134ONIXS_ICEBOE_FORCEINLINE
145ONIXS_ICEBOE_FORCEINLINE
150 CHECK_TYPE_INTEGRAL(Value);
153 std::memcpy(&result, location,
sizeof(Value));
164 template <
class Value>
165 ONIXS_ICEBOE_FORCEINLINE
166 static std::tuple<typename Value::MemberTraits::FirstArgType>
169 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
171 static_assert(std::is_nothrow_constructible<Value, FirstArgType>::value,
172 "Value must be nothrow-constructible from its member types");
184 template <
class Value>
187 typename Value::MemberTraits::FirstArgType,
188 typename Value::MemberTraits::SecondArgType
190 ONIXS_ICEBOE_FORCEINLINE
193 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
194 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
196 static_assert(std::is_nothrow_constructible<
198 FirstArgType, SecondArgType>::value,
199 "Value must be nothrow-constructible from its member types");
203 return std::tuple<FirstArgType, SecondArgType>(
214 template <
class Value>
215 ONIXS_ICEBOE_FORCEINLINE
218 typename Value::MemberTraits::FirstArgType,
219 typename Value::MemberTraits::SecondArgType,
220 typename Value::MemberTraits::ThirdArgType
224 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
225 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
226 typedef typename Value::MemberTraits::ThirdArgType ThirdArgType;
228 static_assert(std::is_nothrow_constructible<
230 FirstArgType, SecondArgType, ThirdArgType>::value,
231 "Value must be nothrow-constructible from its member types");
235 return std::tuple<FirstArgType, SecondArgType, ThirdArgType>(
248 template <
class Value>
249 ONIXS_ICEBOE_FORCEINLINE
252 typename Value::MemberTraits::FirstArgType,
253 typename Value::MemberTraits::SecondArgType,
254 typename Value::MemberTraits::ThirdArgType,
255 typename Value::MemberTraits::FourthArgType
259 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
260 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
261 typedef typename Value::MemberTraits::ThirdArgType ThirdArgType;
262 typedef typename Value::MemberTraits::FourthArgType FourthArgType;
264 static_assert(std::is_nothrow_constructible<
266 FirstArgType, SecondArgType, ThirdArgType, FourthArgType>::value,
267 "Value must be nothrow-constructible from its member types");
271 return std::tuple<FirstArgType, SecondArgType, ThirdArgType, FourthArgType>(
281template <
class Value>
282ONIXS_ICEBOE_FORCEINLINE
283typename std::enable_if<details::HasMemberTraits<Value>::value, Value>::type
291template <
class Value>
292ONIXS_ICEBOE_FORCEINLINE
293typename std::enable_if<!details::HasMemberTraits<Value>::value, Value>::type
301template <
class Value>
302constexpr typename std::enable_if<!details::HasMemberTraits<Value>::value,
size_t>::type
305 return sizeof(cleanType<Value>);
309template <
class Value>
310constexpr typename std::enable_if<details::HasMemberTraits<Value>::value,
size_t>::type
317template <
class Value>
318ONIXS_ICEBOE_FORCEINLINE
319typename std::enable_if<!details::HasSerializeMember<Value>::value>::type
323 static_assert(details::smallType<Value>::value, ONIXS_ICEBOE_TO_STR(Value));
324 std::memcpy(location, &value,
sizeof(Value));
328template <
class Value>
330typename std::enable_if<details::HasSerializeMember<Value>::value>::type
331ONIXS_ICEBOE_FORCEINLINE
335 value.serialize(location);
339template <
class Value>
340ONIXS_ICEBOE_FORCEINLINE
341typename std::enable_if<!details::HasValueStaticMember<Value>::value>::type
349template <
class Value>
350ONIXS_ICEBOE_FORCEINLINE
351typename std::enable_if<details::HasValueStaticMember<Value>::value>::type
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_BEGIN
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_END
#define ONIXS_ICEBOE_HOTPATH
#define ONIXS_ICEBOE_PURE
ONIXS_ICEBOE_FORCEINLINE std::enable_if< details::HasMemberTraits< Value >::value, Value >::type getValue(const void *location) noexcept(noexcept(makeFromTuple< Value >(CompositeExtractor< Value::MemberTraits::Count >::template extractAsTuple< Value >(location))))
constexpr std::enable_if<!details::HasMemberTraits< Value >::value, size_t >::type size() noexcept
ONIXS_ICEBOE_FORCEINLINE std::enable_if<!details::HasValueStaticMember< Value >::value >::type setValue(void *location, Value value) noexcept
UInt16 Word
Alias for Word.
UInt64 QWord
Alias for Quad Word.
ONIXS_ICEBOE_FORCEINLINE void * toOpaquePtr(Type *ptr) noexcept
Makes the pointer an opaque one.
ONIXS_ICEBOE_FORCEINLINE void * toMutable(const Type *ptr) noexcept
ONIXS_ICEBOE_FORCEINLINE Value extractValue(const void *location) noexcept
ONIXS_ICEBOE_FORCEINLINE Type * advanceByBytes(Type *pointer, ptrdiff_t distance) noexcept
Advances the pointer to a given offset (distance) in bytes.
UInt32 DWord
Alias for Double Word.
ONIXS_ICEBOE_FORCEINLINE Byte * toByteBlock(Type *ptr) noexcept
Reinterprets the pointer as a byte block one.
ONIXS_ICEBOE_FORCEINLINE ptrdiff_t byteDistance(Left *left, Right *right) noexcept
ONIXS_ICEBOE_FORCEINLINE Type * advanceBackByBytes(Type *pointer, ptrdiff_t distance) noexcept
ONIXS_ICEBOE_FORCEINLINE std::enable_if<!details::HasSerializeMember< Value >::value >::type commitValue(void *location, Value value) noexcept
UInt8 Byte
Alias for Byte.