59 return static_cast<void*
>(ptr);
71toOpaquePtr(
const Type* ptr)
75 return static_cast<const void*
>(ptr);
107toByteBlock(
const Type* ptr)
126Type* advanceByBytes(Type* pointer, ptrdiff_t distance)
noexcept
130 return reinterpret_cast<Type*
>(toByteBlock(pointer) + distance);
151 reinterpret_cast<Type*
>
153 toByteBlock(pointer) - distance
188extractValue(
const void* location)
noexcept
205template <
unsigned ArgsCount>
206struct CompositeExtractor;
210struct CompositeExtractor<1>
212 template <
class Value>
214 Value extract(
const void* location)
noexcept
220 std::declval<typename Value::MemberTraits::FirstArgType>()
229 extractValue<typename Value::MemberTraits::FirstArgType>(location)
236struct CompositeExtractor<2>
238 template <
class Value>
240 Value extract(
const void* location)
noexcept
242 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
243 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
248 std::declval<FirstArgType>(),
249 std::declval<SecondArgType>()
258 extractValue<FirstArgType>(location),
259 extractValue<SecondArgType>(
260 advanceByBytes(location,
sizeof(FirstArgType)))
267struct CompositeExtractor<4>
269 template <
class Value>
271 Value extract(
const void* location)
noexcept
273 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
274 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
275 typedef typename Value::MemberTraits::ThirdArgType ThirdArgType;
276 typedef typename Value::MemberTraits::FourthArgType FourthArgType;
281 std::declval<FirstArgType>(),
282 std::declval<SecondArgType>(),
283 std::declval<ThirdArgType>(),
284 std::declval<FourthArgType>()
293 extractValue<FirstArgType>(location),
294 extractValue<SecondArgType>(
295 advanceByBytes(location,
sizeof(FirstArgType))),
296 extractValue<ThirdArgType>(
297 advanceByBytes(location,
sizeof(FirstArgType) +
sizeof(SecondArgType))),
298 extractValue<FourthArgType>(
299 advanceByBytes(location,
sizeof(FirstArgType) +
sizeof(SecondArgType) +
sizeof(ThirdArgType)))
310typename EnableIf<details::HasMemberTraits<Value>::value, Value>::type
311getValue(
const void* location)
noexcept
314 return CompositeExtractor<Value::MemberTraits::Count>:: template extract<Value>(location);
323typename EnableIf<!details::HasMemberTraits<Value>::value, Value>::type
324getValue(
const void* location)
noexcept
327 return extractValue<Value>(location);
336typename EnableIf<!details::HasMemberTraits<Value>::value,
size_t>::type
339 return sizeof(Value);
348typename EnableIf<details::HasMemberTraits<Value>::value,
size_t>::type
360typename EnableIf<!details::HasSerializeMember<Value>::value>::type
361commitValue(
void* location, Value value)
377typename EnableIf<details::HasSerializeMember<Value>::value>::type
378commitValue(
void* location, Value value)
382 value.serialize(location);
391typename EnableIf<!details::HasValueStaticMember<Value>::value>::type
392setValue(
void* location, Value value)
396 commitValue(location, value);
405typename EnableIf<details::HasValueStaticMember<Value>::value>::type
406setValue(
void* location, Value)
410 commitValue(location, Value::value());
#define ONIXS_EURONEXT_OPTIQMDG_MESSAGING_NAMESPACE_BEGIN
#define ONIXS_EURONEXT_OPTIQMDG_MESSAGING_NAMESPACE_END
#define ONIXS_EURONEXT_OPTIQMDG_PURE
#define ONIXS_EURONEXT_OPTIQMDG_HOTPATH
#define CHECK_TYPE_INTEGRAL(Type)
UInt16 Word
Alias for Word.
UInt64 QWord
Alias for Quad Word.
UInt32 DWord
Alias for Double Word.
UInt8 Byte
Alias for Byte.