51 ONIXS_B3_UMDF_MD_HOTPATH
54 toOpaquePtr(Type* ptr)
58 return static_cast<void*
>(ptr);
67 ONIXS_B3_UMDF_MD_HOTPATH
70 toOpaquePtr(
const Type* ptr)
74 return static_cast<const void*
>(ptr);
83 ONIXS_B3_UMDF_MD_HOTPATH
86 toByteBlock(Type* ptr)
103 ONIXS_B3_UMDF_MD_HOTPATH
104 ONIXS_B3_UMDF_MD_PURE
106 toByteBlock(
const Type* ptr)
123 ONIXS_B3_UMDF_MD_HOTPATH
124 ONIXS_B3_UMDF_MD_PURE
129 return reinterpret_cast<Type*
>(toByteBlock(pointer) + distance);
139 ONIXS_B3_UMDF_MD_HOTPATH
140 ONIXS_B3_UMDF_MD_PURE
150 reinterpret_cast<Type*
> 152 toByteBlock(pointer) - distance
163 ONIXS_B3_UMDF_MD_HOTPATH
164 ONIXS_B3_UMDF_MD_PURE
185 ONIXS_B3_UMDF_MD_HOTPATH
204 template <
unsigned ArgsCount>
205 struct CompositeExtractor;
209 struct CompositeExtractor<1>
211 template <
class Value>
216 #if defined (ONIXS_B3_UMDF_MD_CXX11) 220 std::declval<typename Value::MemberTraits::FirstArgType>()
230 extractValue<typename Value::MemberTraits::FirstArgType>(location)
237 struct CompositeExtractor<2>
239 template <
class Value>
243 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
244 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
246 #if defined (ONIXS_B3_UMDF_MD_CXX11) 250 std::declval<FirstArgType>(),
251 std::declval<SecondArgType>()
261 extractValue<FirstArgType>(location),
262 extractValue<SecondArgType>(
263 advanceByBytes(location,
sizeof(FirstArgType)))
270 struct CompositeExtractor<4>
272 template <
class Value>
276 typedef typename Value::MemberTraits::FirstArgType FirstArgType;
277 typedef typename Value::MemberTraits::SecondArgType SecondArgType;
278 typedef typename Value::MemberTraits::ThirdArgType ThirdArgType;
279 typedef typename Value::MemberTraits::FourthArgType FourthArgType;
281 #if defined (ONIXS_B3_UMDF_MD_CXX11) 285 std::declval<FirstArgType>(),
286 std::declval<SecondArgType>(),
287 std::declval<ThirdArgType>(),
288 std::declval<FourthArgType>()
298 extractValue<FirstArgType>(location),
299 extractValue<SecondArgType>(
300 advanceByBytes(location,
sizeof(FirstArgType))),
301 extractValue<ThirdArgType>(
302 advanceByBytes(location,
sizeof(FirstArgType) +
sizeof(SecondArgType))),
303 extractValue<FourthArgType>(
304 advanceByBytes(location,
sizeof(FirstArgType) +
sizeof(SecondArgType) +
sizeof(ThirdArgType)))
314 ONIXS_B3_UMDF_MD_HOTPATH
315 typename EnableIf<details::HasMemberTraits<Value>::value, Value>::type
319 return CompositeExtractor<Value::MemberTraits::Count>:: template extract<Value>(location);
327 ONIXS_B3_UMDF_MD_HOTPATH
328 typename EnableIf<!details::HasMemberTraits<Value>::value, Value>::type
332 return extractValue<Value>(location);
341 typename EnableIf<!details::HasMemberTraits<Value>::value,
size_t>::type
344 return sizeof(Value);
353 typename EnableIf<details::HasMemberTraits<Value>::value,
size_t>::type
364 ONIXS_B3_UMDF_MD_HOTPATH
365 typename EnableIf<!details::HasSerializeMember<Value>::value>::type
366 commitValue(
void* location, Value value)
381 ONIXS_B3_UMDF_MD_HOTPATH
382 typename EnableIf<details::HasSerializeMember<Value>::value>::type
383 commitValue(
void* location, Value value)
387 value.serialize(location);
395 ONIXS_B3_UMDF_MD_HOTPATH
396 typename EnableIf<!details::HasValueStaticMember<Value>::value>::type
397 setValue(
void* location, Value value)
401 commitValue(location, value);
409 ONIXS_B3_UMDF_MD_HOTPATH
410 typename EnableIf<details::HasValueStaticMember<Value>::value>::type
411 setValue(
void* location, Value)
415 commitValue(location, Value::value());
#define ONIXS_B3_UMDF_MD_NOTHROW
#define ONIXS_B3_UMDF_MD_CONSTEXPR
UInt8 Byte
Alias for Byte.
UInt16 UInt16
2-byte unsigned integer, from 0 to 65535..
UInt8 UInt8
1-byte unsigned integer, from 0 to 255..
#define ONIXS_B3_UMDF_MD_MESSAGING_NAMESPACE_END
UInt64 QWord
Alias for Quad Word.
UInt64 UInt64
8-byte unsigned integer, from 0 to 18446744073709551615 (2^64-1)..
UInt32 UInt32
4-byte unsigned integer, from 0 to 4294967295 (2^32-1)..
UInt16 Word
Alias for Word.
#define ONIXS_B3_UMDF_MD_MESSAGING_NAMESPACE_BEGIN
UInt32 DWord
Alias for Double Word.
#define CHECK_TYPE_INTEGRAL(Type)