![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template signalBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Эффекты: | Инициализирует сигнал, не содержащий слотов, копирует данный комбинатор во внутреннее хранилище и сохраняет заданный объект функции сравнения групп для сравнения групп. |
Постусловия: | < |
signal(signal&&other);>
Переместить конструктор.
Постусловия: | Сигнал< |
Броски: | Не бросит |
signal&operator=(signal&&rhs);>
Переместить назначение.
Последующие условия: | Сигнал< |
Броски: |
signal
connection managementconnectionconnect(constslot_type&slot,connect_positionat=at_back); connectionconnect(constgroup_type&group,constslot_type&slot, connect_positionat=at_back);>
Эффекты: | Подключает сигнал к входящему слоту. Если слот неактивен, т.е. любой из отслеживаемых объектов слотов был уничтожен, то вызов на соединение является безоперационным. Если используется вторая версия< |
Возвращается: | Объект< |
Броски: | Эта процедура соответствует строгой гарантии исключения, когда любое исключение приведет к тому, что слот не будет подключен к сигналу. |
Сложность: | Постоянное время при подключении слота без названия группы или логарифмического в количестве групп при подключении к конкретной группе. |
Примечания: | Не уточняется, приведет ли соединение слота во время вызова сигнала к немедленному вызову слота. |
connectionconnect_extended(constextended_slot_type&slot, connect_positionat=at_back); connectionconnect_extended(constgroup_type&group, constextended_slot_type&slot, connect_positionat=at_back);>
Методы<connect_extended
>работают так же, как методы<connect
>, за исключением слотов типа<extended_slot_type
>. Это полезно, если слот должен получить доступ к соединению между ним и сигналом, вызывающим его, например, если он хочет отключить или заблокировать свое собственное соединение.
voiddisconnect(constgroup_type&group); template<typenameS>voiddisconnect(constS&slot_func);>
Эффекты: | Если параметр является (конвертируемым) именем группы, любые слоты в данной группе отключаются. В противном случае любые слоты, равные данной функции слота, отключаются. Обратите внимание, что аргумент< |
Броски: | Бросок не будет производиться, если не будет броска деструктора пользователя или оператора равенства< |
Сложность: | Если дана группа, O(lg g) + k, где g - число групп в сигнале и k - число слотов в группе. В противном случае линейно количество слотов, подключенных к сигналу. |
voiddisconnect_all_slots();>
Эффекты: | Отключает все слоты, подключенные к сигналу. |
< | |
Броски: | Если отключение слота вызывает исключение, не все слоты могут быть отключены. |
Сложность: | Линейное число слотов, известных сигналу. |
Примечания: | Могут быть вызваны в любое время в течение срока действия сигнала, в том числе во время вызовов в слоты сигнала. |
boolempty()const;>
Возвращается: | < |
Бросает: | Не бросит. |
Сложность: | Линейный по числу слотов, известных сигналу. |
Обоснование: | Слоты могут отключаться в любой момент времени, в том числе при использовании тех же слотов. Поэтому возможно, что реализация должна искать через список отключенных слотов, чтобы определить, все ли слоты все еще подключены. |
std::size_tnum_slots()const;>
Возвращение: | Количество слотов, подключенных к сигналу |
Бросок: | |
Сложность: | Линейное число слотов, известных сигналу. |
Обоснование: | Слоты могут отключаться в любой момент времени, в том числе при использовании тех же слотов. Поэтому возможно, что реализация должна искать через список отключенных слотов, чтобы определить, сколько слотов все еще подключены. |
signal
invocationresult_typeoperator()(arg<0>::typea1,arg<1>::typea2,..., arg<N-1>::typeaN); result_typeoperator()(arg<0>::typea1,arg<1>::typea2,..., arg<N-1>::typeaN)const;>
Эффекты: | Взывает комбинатор с диапазоном< |
Возвращение: | Результат возвращается комбинатором. |
Броски: | Если исключение бросается вызовом слота или если комбинатор не отменяет какой-либо слот за некоторым заданным слотом, все слоты после этого слота во внутреннем списке подключенных слотов не будут вызываться. |
Примечания: | Будут задействованы только слоты, связанные с итераторами, которые фактически исключены. Множественные отступления одного и того же итератора не приведут к нескольким вызовам слота, потому что обратная стоимость слота будет кэшироваться. < |
signal
modifiersvoidswap(signal&other);>
Эффекты:
Переключает сигнал, указанный в<this
>и<other
>.
Не буду бросать.
signal
specialized algorithmstemplate<typenameSignature,typenameCombiner,typenameGroup, typenameGroupCompare,typenameSlotFunction, typenameExtendedSlotFunction,typenameMutex> voidswap(signal<Signature,Combiner,Group,GroupCompare,SlotFunction,ExtendedSlotFunction,Mutex>&x, signal<Signature,Combiner,Group,GroupCompare,SlotFunction,ExtendedSlotFunction,Mutex>&y);>
Эффекты: | < |
Броски: | Не буду бросать. |
Статья Class template signal раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |