ConsequentDataStorageInputOwn::ConsequentDataStorageInputOwn: различия между версиями
Перейти к навигации
Перейти к поиску
Параметры шаблона
Параметры
Строка 1: | Строка 1: | ||
{{function_begin| | {{function_begin|ContiguousDataStorageInputOwn() noexcept; //1 | ||
explicit | explicit ContiguousDataStorageInputOwn(const IContiguousDataStorageInput* pStorage) noexcept; //2 | ||
ContiguousDataStorageInputOwn(ContiguousDataStorageInputOwn&& right) noexcept; //3 | |||
template <class AnotherAdapterRef> | template <class AnotherAdapterRef> | ||
explicit | explicit ContiguousDataStorageInputOwn(const AnotherAdapterRef& refRight) noexcept; //4 | ||
template <class AnotherAdapterOwn> | template <class AnotherAdapterOwn> | ||
ContiguousDataStorageInputOwn(const AnotherAdapterOwn& ownRight) noexcept; //5 | |||
template <class AnotherAdapterOwn> | template <class AnotherAdapterOwn> | ||
ContiguousDataStorageInputOwn(AnotherAdapterOwn&& ownRight) noexcept; //6 | |||
|{{ | |{{ContiguousDataStorageInputOwn::ContiguousDataStorageInputOwn brief}} | ||
# Конструктор по умолчанию, инициализирующий создаваемый экземпляр адаптера нулевым адресом. | # Конструктор по умолчанию, инициализирующий создаваемый экземпляр адаптера нулевым адресом. | ||
# Явный конструктор, инициализирующий создаваемый экземпляр адаптера адресом реализации накопителя данных. | # Явный конструктор, инициализирующий создаваемый экземпляр адаптера адресом реализации накопителя данных. | ||
# Конструктор, выполняющий инициализацию адаптера с перемещением адреса реализации, с которой ассоциирован параметр. Адаптер {{param|right}} в результате операции теряет владение реализацией накопителя данных, как если бы был выполнен вызов <source lang="cpp" inline>right.release_ownership()</source> с присваиванием возвращенного адреса создаваемому адаптеру. | # Конструктор, выполняющий инициализацию адаптера с перемещением адреса реализации, с которой ассоциирован параметр. Адаптер {{param|right}} в результате операции теряет владение реализацией накопителя данных, как если бы был выполнен вызов <source lang="cpp" inline>right.release_ownership()</source> с присваиванием возвращенного адреса создаваемому адаптеру. | ||
# Явный конструктор, создающий адаптер с адресом реализации интерфейса, полученным из [[ссылочный адаптер|ссылочного адаптера]] {{param|refRight}} путем вызова <source lang="cpp" inline>refRight.get_interface()->Clone()</source> с неявным приведением результата к типу <source lang="cpp" inline>const | # Явный конструктор, создающий адаптер с адресом реализации интерфейса, полученным из [[ссылочный адаптер|ссылочного адаптера]] {{param|refRight}} путем вызова <source lang="cpp" inline>refRight.get_interface()->Clone()</source> с неявным приведением результата к типу <source lang="cpp" inline>const IContiguousDataStorageInput*</source>. Данный конструктор участвует в разрешении перегрузки, только если подтип <source lang="cpp" inline>AnotherAdapterRef::interface_type</source> существует и поддерживает метод <source lang="cpp" inline>AnotherAdapterRef::interface_type::Clone()</source>, указатель <source lang="cpp" inline>AnotherAdapterRef::interface_type*</source> приводим неявно к типу <source lang="cpp" inline>const IContiguousDataStorageInput*</source>, а сам тип {{param|AnotherAdapterRef}} является [[ссылочный адаптер|ссылочным адаптером]]. | ||
# Конструктор, создающий экземпляр адаптера на основе заданного параметрически владеющего адаптера путем клонирования интерфейса (то есть вызова метода <source lang="cpp" inline>ownRight.get_interface()->Clone()</source>). Данный конструктор участвует в разрешении перегрузки, только если подтип <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> существует и поддерживает метод <source lang="cpp" inline>AnotherAdapterOwn::interface_type::Clone()</source>, указатель <source lang="cpp" inline>AnotherAdapterOwn::interface_type*</source> приводим неявно к типу <source lang="cpp" inline>const | # Конструктор, создающий экземпляр адаптера на основе заданного параметрически владеющего адаптера путем клонирования интерфейса (то есть вызова метода <source lang="cpp" inline>ownRight.get_interface()->Clone()</source>). Данный конструктор участвует в разрешении перегрузки, только если подтип <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> существует и поддерживает метод <source lang="cpp" inline>AnotherAdapterOwn::interface_type::Clone()</source>, указатель <source lang="cpp" inline>AnotherAdapterOwn::interface_type*</source> приводим неявно к типу <source lang="cpp" inline>const IContiguousDataStorageInput*</source>, а сам тип {{param|AnotherAdapterOwn}} является [[владеющий адаптер|адаптером с владением]]. | ||
# Конструктор, создающий экземпляр адаптера путем переноса адреса реализации интерфейса <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> с приведением его к типу <source lang="cpp" inline>const | # Конструктор, создающий экземпляр адаптера путем переноса адреса реализации интерфейса <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> с приведением его к типу <source lang="cpp" inline>const IContiguousDataStorageInput*</source>. В результате вызова адаптер {{param|ownRight}} теряет владение своим экземпляром реализации интерфейса <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> и инициализируется нулевым адресом, как если бы был выполнен вызов <source lang="cpp" inline>ownRight.release_ownership()</source>.}} | ||
{{function template paramlist begin}} | {{function template paramlist begin}} | ||
{{function template paramlist add|AnotherAdapterRef|Тип ссылочного адаптера, участвующего в качестве параметра {{param|refRight}} в конструкторе 4. Значение <source lang="cpp" inline>std::is_convertible_v<typename AnotherAdapterRef::interface_type*, const | {{function template paramlist add|AnotherAdapterRef|Тип ссылочного адаптера, участвующего в качестве параметра {{param|refRight}} в конструкторе 4. Значение <source lang="cpp" inline>std::is_convertible_v<typename AnotherAdapterRef::interface_type*, const IContiguousDataStorageInput*></source> должно быть {{cpp_true}}, адаптер - [[ссылочный адаптер|ссылочным]], а интерфейс <source lang="cpp" inline>AnotherAdapterRef::interface_type</source> должен поддерживать вызов <source lang="cpp" inline>pI->Clone(&pCopy)</source>, где <tt>pI</tt> - указатель оригинальную реализацию интерфейса <source lang="cpp" inline>AnotherAdapterRef::interface_type</source>, <tt>pCopy</tt> - указатель, на выходе функции <tt>Clone</tt> принимающий адрес копии оригинальной реализации.}} | ||
{{function template paramlist add|AnotherAdapterOwn|Тип адаптера с владением, участвующего в качестве параметра {{param|ownRight}} в конструкторах 5 и 6. Значение <source lang="cpp" inline>std::is_convertible_v<typename AnotherAdapterOwn::interface_type*, const | {{function template paramlist add|AnotherAdapterOwn|Тип адаптера с владением, участвующего в качестве параметра {{param|ownRight}} в конструкторах 5 и 6. Значение <source lang="cpp" inline>std::is_convertible_v<typename AnotherAdapterOwn::interface_type*, const IContiguousDataStorageInput*></source> должно быть {{cpp_true}}, адаптер - [[владеющий адаптер|владеющим]]. Для копирования перегрузкой 5 интерфейс <source lang="cpp" inline>AnotherAdapterOwn::interface_type</source> также должен поддерживать вызов <source lang="cpp" inline>pI->Clone(&pCopy)</source>, где <tt>pI</tt> - указатель оригинальную реализацию интерфейса <source lang="cpp" inline>AnotherAdapterRef::interface_type</source>, <tt>pCopy</tt> - указатель, на выходе функции <tt>Clone</tt> принимающий адрес копии оригинальной реализации.}} | ||
{{function template paramlist end}} | {{function template paramlist end}} | ||
{{function_paramlist begin}} | {{function_paramlist begin}} | ||
{{function_paramlist add|pStorage|Указатель на адаптируемую реализацию накопителя данных [[ | {{function_paramlist add|pStorage|Указатель на адаптируемую реализацию накопителя данных [[IContiguousDataStorageInput]].|paramdir=[in]}} | ||
{{function_paramlist add|right|Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру [[ | {{function_paramlist add|right|Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру [[ContiguousDataStorageInputOwn]], как если бы был выполнен вызов <source lang="cpp" inline>right.release_ownership()</source>.}} | ||
{{function_paramlist add|refRight|[[Ссылочный адаптер]], реализация интерфейса которого клонируется с целью создания копии, управляемой создаваемым адаптером, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <tt>pCopy</tt>, получаемым в результате вызова <source lang="cpp" inline>refRight.get_interface()->Clone(&pCopy)</source>.}} | {{function_paramlist add|refRight|[[Ссылочный адаптер]], реализация интерфейса которого клонируется с целью создания копии, управляемой создаваемым адаптером, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <tt>pCopy</tt>, получаемым в результате вызова <source lang="cpp" inline>refRight.get_interface()->Clone(&pCopy)</source>.}} | ||
{{function_paramlist add|ownRight|[[Владеющий адаптер]], реализация интерфейса которого клонируется или переносится на создаваемый адаптер. Копирование выполняется перегрузкой 5, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <tt>pCopy</tt>, получаемым в результате вызова <source lang="cpp" inline>ownRight.get_interface()->Clone(&pCopy)</source>. Перемещение выполняется перегрузкой 6, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <source lang="cpp" inline>ownRight.release_ownership()</source>.}} | {{function_paramlist add|ownRight|[[Владеющий адаптер]], реализация интерфейса которого клонируется или переносится на создаваемый адаптер. Копирование выполняется перегрузкой 5, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <tt>pCopy</tt>, получаемым в результате вызова <source lang="cpp" inline>ownRight.get_interface()->Clone(&pCopy)</source>. Перемещение выполняется перегрузкой 6, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом <source lang="cpp" inline>ownRight.release_ownership()</source>.}} | ||
{{ | {{function_paramlist end}} | ||
{{function_end}} |
Версия 22:18, 16 августа 2019
ContiguousDataStorageInputOwn() noexcept; //1
explicit ContiguousDataStorageInputOwn(const IContiguousDataStorageInput* pStorage) noexcept; //2
ContiguousDataStorageInputOwn(ContiguousDataStorageInputOwn&& right) noexcept; //3
template <class AnotherAdapterRef>
explicit ContiguousDataStorageInputOwn(const AnotherAdapterRef& refRight) noexcept; //4
template <class AnotherAdapterOwn>
ContiguousDataStorageInputOwn(const AnotherAdapterOwn& ownRight) noexcept; //5
template <class AnotherAdapterOwn>
ContiguousDataStorageInputOwn(AnotherAdapterOwn&& ownRight) noexcept; //6
Конструкторы адаптера с владением.
- Конструктор по умолчанию, инициализирующий создаваемый экземпляр адаптера нулевым адресом.
- Явный конструктор, инициализирующий создаваемый экземпляр адаптера адресом реализации накопителя данных.
- Конструктор, выполняющий инициализацию адаптера с перемещением адреса реализации, с которой ассоциирован параметр. Адаптер right в результате операции теряет владение реализацией накопителя данных, как если бы был выполнен вызов
right.release_ownership()
с присваиванием возвращенного адреса создаваемому адаптеру. - Явный конструктор, создающий адаптер с адресом реализации интерфейса, полученным из ссылочного адаптера refRight путем вызова
refRight.get_interface()->Clone()
с неявным приведением результата к типуconst IContiguousDataStorageInput*
. Данный конструктор участвует в разрешении перегрузки, только если подтипAnotherAdapterRef::interface_type
существует и поддерживает методAnotherAdapterRef::interface_type::Clone()
, указательAnotherAdapterRef::interface_type*
приводим неявно к типуconst IContiguousDataStorageInput*
, а сам тип AnotherAdapterRef является ссылочным адаптером. - Конструктор, создающий экземпляр адаптера на основе заданного параметрически владеющего адаптера путем клонирования интерфейса (то есть вызова метода
ownRight.get_interface()->Clone()
). Данный конструктор участвует в разрешении перегрузки, только если подтипAnotherAdapterOwn::interface_type
существует и поддерживает методAnotherAdapterOwn::interface_type::Clone()
, указательAnotherAdapterOwn::interface_type*
приводим неявно к типуconst IContiguousDataStorageInput*
, а сам тип AnotherAdapterOwn является адаптером с владением. - Конструктор, создающий экземпляр адаптера путем переноса адреса реализации интерфейса
AnotherAdapterOwn::interface_type
с приведением его к типуconst IContiguousDataStorageInput*
. В результате вызова адаптер ownRight теряет владение своим экземпляром реализации интерфейсаAnotherAdapterOwn::interface_type
и инициализируется нулевым адресом, как если бы был выполнен вызовownRight.release_ownership()
.
AnotherAdapterRef | Тип ссылочного адаптера, участвующего в качестве параметра refRight в конструкторе 4. Значение std::is_convertible_v<typename AnotherAdapterRef::interface_type*, const IContiguousDataStorageInput*> должно быть true, адаптер - ссылочным, а интерфейс AnotherAdapterRef::interface_type должен поддерживать вызов pI->Clone(&pCopy) , где pI - указатель оригинальную реализацию интерфейса AnotherAdapterRef::interface_type , pCopy - указатель, на выходе функции Clone принимающий адрес копии оригинальной реализации. |
AnotherAdapterOwn | Тип адаптера с владением, участвующего в качестве параметра ownRight в конструкторах 5 и 6. Значение std::is_convertible_v<typename AnotherAdapterOwn::interface_type*, const IContiguousDataStorageInput*> должно быть true, адаптер - владеющим. Для копирования перегрузкой 5 интерфейс AnotherAdapterOwn::interface_type также должен поддерживать вызов pI->Clone(&pCopy) , где pI - указатель оригинальную реализацию интерфейса AnotherAdapterRef::interface_type , pCopy - указатель, на выходе функции Clone принимающий адрес копии оригинальной реализации. |
[in] | pStorage | Указатель на адаптируемую реализацию накопителя данных IContiguousDataStorageInput. |
right | Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру ContiguousDataStorageInputOwn, как если бы был выполнен вызов right.release_ownership() . | |
refRight | Ссылочный адаптер, реализация интерфейса которого клонируется с целью создания копии, управляемой создаваемым адаптером, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом pCopy, получаемым в результате вызова refRight.get_interface()->Clone(&pCopy) . | |
ownRight | Владеющий адаптер, реализация интерфейса которого клонируется или переносится на создаваемый адаптер. Копирование выполняется перегрузкой 5, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом pCopy, получаемым в результате вызова ownRight.get_interface()->Clone(&pCopy) . Перемещение выполняется перегрузкой 6, как если бы было выполнено создание адаптера путем вызова перегрузки 2 с аргументом ownRight.release_ownership() . |