TPOINT3D::Marshal: различия между версиями
Перейти к навигации
Перейти к поиску
Параметры
Возвращаемое значение: Созданный запаковщик, с ассоциированным запакованным вектором.
Возможные исключения
См. также
(Новая страница: «{{NavBar|{{POINT3DEXT hierarchy}} \ Marshal}} {{function begin|template <class packed_alloc_t {{=}} default_package_allocator> package<packed_alloc_t, __TPOINT…») |
|||
Строка 1: | Строка 1: | ||
{{NavBar|{{POINT3DEXT hierarchy}} \ Marshal}} | {{NavBar|{{POINT3DEXT hierarchy}} \ Marshal}} | ||
{{function begin|template <class packed_alloc_t {{=}} default_package_allocator> | {{function begin|template <class packed_alloc_t {{=}} default_package_allocator> | ||
package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc {{=}} packed_alloc_t()) const;|{{POINT3DEXT_Marshal_brief}}}} | package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc {{=}} packed_alloc_t()) const; | ||
package_const_reference<__TPOINT3D<unit_t, alloc_t>> Marshal(void* pBuffer, size_type cbBuffer) const;|{{POINT3DEXT_Marshal_brief}} | |||
#Создает и возвращает запаковщик [[package]], управляющий данными и выделенной им для этих данных памятью. | |||
#Создает и возвращает запаковщик [[package_reference]], управляющий данными, записываемыми в предоставленный извне буфер. Ответственность за управления буфером в данном случае ложится на вызывающего.}} | |||
{{function_paramlist begin}} | {{function_paramlist begin}} | ||
{{function_paramlist add|packed_alloc|Менеджер памяти, который должен использоваться объектом [[package]].}} | {{function_paramlist add|packed_alloc|Менеджер памяти, который должен использоваться объектом [[package]].}} | ||
{{function_paramlist add|pBuffer|Указатель на буфер памяти, который будет использоваться объектом [[package_reference]] для записи в этот буфер запакованного вектора.|paramdir=[in]}} | |||
{{function_paramlist add|cbBuffer|Байтовый размер предоставленного извне буфера, который должен быть не меньше значения, возвращаемого методом [[POINT3DEXT_MarshalSize|POINT3DEXT::MarshalSize]].}} | |||
{{function_paramlist end}} | {{function_paramlist end}} | ||
{{function_return_value|Созданный запаковщик, с ассоциированным запакованным вектором.}} | {{function_return_value|Созданный запаковщик, с ассоциированным запакованным вектором.}} | ||
{{function_details|Фактически | {{function_details|Фактически методы делегируют вызовы конструкторам создаваемых и возвращаемых запаковщиков, [[package]] и [[package_reference]] соответственно, которые создают и управляют запакованными данными, и, для перегрузки 1, памятью: | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
return package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>>(std::allocator_arg, packed_alloc, *this); | template <class packed_alloc_t = default_package_allocator> | ||
package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const | |||
{ | |||
return package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>>(std::allocator_arg, packed_alloc, *this); | |||
} | |||
package_const_reference<__TPOINT3D<unit_t, alloc_t>> Marshal(_Out_bytecap_(cbBuffer) void* pBuffer, size_type cbBuffer) const | |||
{ | |||
return package_const_reference<__TPOINT3D<unit_t, alloc_t>>(pBuffer, cbBuffer, *this); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Вместо вызова данного метода предпочтительнее использовать запаковщик на прямую, либо через вспомогательную функцию [[make_package]].}} | Вместо вызова данного метода предпочтительнее использовать запаковщик на прямую, либо через вспомогательную функцию [[make_package]].}} | ||
{{function_exceptionlist begin}} | {{function_exceptionlist begin}} | ||
{{function_exceptionlist add|| | {{function_exceptionlist add||Перегрузка 1 не генерирует исключений, но исключения, сгенерированные менеджером памяти не перехватываются.}} | ||
{{function_exceptionlist add|[http://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_insufficient_buffer_exception.html Chusov::Exceptions::InsufficientBufferException]|Исключение, которое может быть сгенерировано перегрузкой 2 в случае, если предоставлен слишком малый буфер <tt>pBuffer</tt>.}} | |||
{{function_exceptionlist end}} | {{function_exceptionlist end}} | ||
{{function_sa begin}} | {{function_sa begin}} |
Версия 06:28, 6 января 2016
Шаблон:POINT3DEXT hierarchy \ Marshal
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const;
package_const_reference<__TPOINT3D<unit_t, alloc_t>> Marshal(void* pBuffer, size_type cbBuffer) const;
Шаблон:POINT3DEXT Marshal brief
- Создает и возвращает запаковщик package, управляющий данными и выделенной им для этих данных памятью.
- Создает и возвращает запаковщик package_reference, управляющий данными, записываемыми в предоставленный извне буфер. Ответственность за управления буфером в данном случае ложится на вызывающего.
packed_alloc | Менеджер памяти, который должен использоваться объектом package. | |
[in] | pBuffer | Указатель на буфер памяти, который будет использоваться объектом package_reference для записи в этот буфер запакованного вектора. |
cbBuffer | Байтовый размер предоставленного извне буфера, который должен быть не меньше значения, возвращаемого методом POINT3DEXT::MarshalSize. |
Фактически методы делегируют вызовы конструкторам создаваемых и возвращаемых запаковщиков, package и package_reference соответственно, которые создают и управляют запакованными данными, и, для перегрузки 1, памятью:
template <class packed_alloc_t = default_package_allocator>
package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>> Marshal(const packed_alloc_t& packed_alloc = packed_alloc_t()) const
{
return package<packed_alloc_t, __TPOINT3D<unit_t, alloc_t>>(std::allocator_arg, packed_alloc, *this);
}
package_const_reference<__TPOINT3D<unit_t, alloc_t>> Marshal(_Out_bytecap_(cbBuffer) void* pBuffer, size_type cbBuffer) const
{
return package_const_reference<__TPOINT3D<unit_t, alloc_t>>(pBuffer, cbBuffer, *this);
}
Вместо вызова данного метода предпочтительнее использовать запаковщик на прямую, либо через вспомогательную функцию make_package.
Перегрузка 1 не генерирует исключений, но исключения, сгенерированные менеджером памяти не перехватываются. | |
Chusov::Exceptions::InsufficientBufferException | Исключение, которое может быть сгенерировано перегрузкой 2 в случае, если предоставлен слишком малый буфер pBuffer. |
package | Используемый методом запаковщик. |
default_package_allocator | Используемый запаковщиком менеджер памяти по умолчанию. |
Allocator | Требования к пользовательскому менеджеру памяти. |