TSIZE3D::Marshal
Версия от 07:06, 6 января 2016; Андрей Чусов (обсуждение | вклад) (Новая страница: «{{NavBar|{{SIZE3DEXT hierarchy}} \ Marshal}} {{function begin|template <class packed_alloc_t {{=}} default_package_allocator> package<packed_alloc_t, __TSIZE3D…»)
Шаблон:SIZE3DEXT hierarchy \ Marshal
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TSIZE3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const;
package_const_reference<__TSIZE3D<unit_t, alloc_t>> Marshal(void* pBuffer, size_type cbBuffer) const;
Шаблон:SIZE3DEXT Marshal brief
- Создает и возвращает запаковщик package, управляющий данными и выделенной им для этих данных памятью.
- Создает и возвращает запаковщик package_reference, управляющий данными, записываемыми в предоставленный извне буфер. Ответственность за управления буфером в данном случае ложится на вызывающего.
packed_alloc | Менеджер памяти, который должен использоваться объектом package. | |
[in] | pBuffer | Указатель на буфер памяти, который будет использоваться объектом package_reference для записи в этот буфер запакованного вектора. |
cbBuffer | Байтовый размер предоставленного извне буфера, который должен быть не меньше значения, возвращаемого методом SIZE3DEXT::MarshalSize. |
Фактически методы делегируют вызовы конструкторам создаваемых и возвращаемых запаковщиков, package и package_reference соответственно, которые создают и управляют запакованными данными, и, для перегрузки 1, памятью:
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TSIZE3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const
{
return package<packed_alloc_t, __TSIZE3D<unit_t, alloc_t>>(std::allocator_arg, packed_alloc, *this);
}
package_const_reference<__TSIZE3D<unit_t, alloc_t>> Marshal(_Out_bytecap_(cbBuffer) void* pBuffer, size_type cbBuffer) const
{
return package_const_reference<__TSIZE3D<unit_t, alloc_t>>(pBuffer, cbBuffer, *this);
}
Вместо вызова данного метода предпочтительнее использовать запаковщик на прямую, либо через вспомогательную функцию make_package.
Перегрузка 1 не генерирует исключений, но исключения, сгенерированные менеджером памяти не перехватываются. | |
Chusov::Exceptions::InsufficientBufferException | Исключение, которое может быть сгенерировано перегрузкой 2 в случае, если предоставлен слишком малый буфер pBuffer. |
package | Используемый методом запаковщик. |
default_package_allocator | Используемый запаковщиком менеджер памяти по умолчанию. |
Allocator | Требования к пользовательскому менеджеру памяти. |