![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template signalNBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Эффекты: | Инициирует сигнал, чтобы он не содержал слотов, копирует данный комбинатор во внутреннее хранилище и сохраняет данный объект функции сравнения групп для сравнения групп. |
Постусловия: |
~signalN();>
Эффекты: | Отключает все слоты, подключенные к<*this > |
signalN
connection managementsignals::connection connect(constslot_type&slot, signals::connect_positionat=signals::at_back); signals::connection connect(constgroup_type&group,constslot_type&slot, signals::connect_positionat=signals::at_back);>
Эффекты: | Подключает сигнал к входящему слоту. Если слот неактивен, т.е. любой из отслеживаемых объектов, связанных вызовом слота, был уничтожен, то вызов для подключения является безоперационным. Если второй вариант<connect >вызывается, слот связан с данной группой. Параметр<at >указывает, где должен быть подключен слот:<at_front >указывает, что слот будет подключен в передней части списка или группы слотов, и<at_back >указывает, что слот будет подключен в задней части списка или группы слотов. |
Возвращается: | Объект<signals::connection >, который ссылается на вновь созданное соединение между сигналом и слотом; если слот неактивен, возвращает отключенное соединение. |
Броски: | Эта процедура соответствует строгой гарантии исключения, когда любое исключение приведет к тому, что слот не будет подключен к сигналу. |
Сложность: | Постоянное время при подключении слота без названия группы или логарифмического в количестве групп при подключении к конкретной группе. |
Примечания: | Не уточняется, приведет ли соединение слота во время вызова сигнала к немедленному вызову слота. |
voiddisconnect(constgroup_type&group); template<typenameSlot>voiddisconnect(constSlot&slot);>
Эффекты: | Если параметр является (конвертируемым) именем группы, любые слоты в данной группе отключаются. В противном случае любые слоты, равные данному слоту, отключаются. |
Броски: | Бросок не будет производиться, если не будет броска деструктора пользователя или оператора равенства<== >. Если оба броска, не все слоты могут быть отключены. |
Сложность: | Если дана группа, O(lg g) + k, где g - число групп в сигнале и k - число слотов в группе. В противном случае линейно количество слотов, подключенных к сигналу. |
voiddisconnect_all_slots();>
Эффекты: | Отключает все слоты, подключенные к сигналу. |
<this->empty() >. | |
Броски: | Если отключение слота вызывает исключение, не все слоты могут быть отключены. |
Сложность: | Линейное число слотов, известных сигналу. |
Примечания: | Может быть вызван в любое время в течение срока службы сигнала, в том числе во время вызовов в слоты сигнала. |
boolempty()const;>
Возвращается: | <true >, если к сигналу не подключены слоты, и<false >в противном случае. |
Бросает: | Не бросит. |
Сложность: | Линейное число слотов, известных сигналу. |
Обоснование: | Слоты могут отключаться в любой момент времени, в том числе при использовании тех же слотов. Поэтому возможно, что реализация должна искать через список отключенных слотов, чтобы определить, все ли слоты все еще подключены. |
std::size_tnum_slots()const;>
Возвращение: | Количество слотов, подключенных к сигналу |
Бросок: | Не бросит. |
Сложность: | Линейное число слотов, известных сигналу. |
Обоснование: | Слоты могут отключаться в любой момент времени, в том числе при использовании тех же слотов. Поэтому возможно, что реализация должна искать через список отключенных слотов, чтобы определить, сколько слотов все еще подключены. |
signalN
invocationresult_typeoperator()(arg1_typea1,arg2_typea2,...,argN_typeaN); result_typeoperator()(arg1_typea1,arg2_typea2,...,argN_typeaN)const;>
Эффекты: | Вызывает комбинатор с диапазоном<slot_call_iterator >[первый, последний], соответствующим последовательности вызовов в слоты, подключенные к сигналу<*this >. Отсылка итератора в этом диапазоне вызывает вызов слота с заданным набором параметров<(a1, a2, ...,
aN) >, результат которого возвращается из операции отсчета итератора. |
Возвращение: | Результат возвращался комбинатором. |
Броски: | Если исключение бросается вызовом слота или если комбинатор не отменяет какой-либо слот за некоторым заданным слотом, все слоты после этого слота во внутреннем списке подключенных слотов не будут вызываться. |
Примечания: | Будут задействованы только слоты, связанные с итераторами, которые фактически исключены. Множественные отступления одного и того же итератора не приведут к нескольким вызовам слота, потому что обратная стоимость слота будет кэшироваться. < Вызов оператора вызова функции может вызвать неопределенное поведение, если к сигналу не подключены слоты, в зависимости от используемого комбинатора. Комбинатор по умолчанию хорошо определен для нулевых слотов, когда тип возврата недействителен, но не определен, когда тип возврата является любым другим типом (потому что нет способа синтезировать значение возврата). |
Статья Class template signalN раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |