本文整理汇总了C++中listenerlist::Iterator类的典型用法代码示例。如果您正苦于以下问题:C++ Iterator类的具体用法?C++ Iterator怎么用?C++ Iterator使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Iterator类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
/*! Notifies all interested listeners of this transaction about the \a event.
If \a event is a closing event (ie. TRANSACTION_ENDED, and
TRANSACTION_ABORTED), all listeners except those listening to
TRANSACTION_WRITTEN will be removed.
*/
static void
notify_transaction_listeners(block_cache* cache, cache_transaction* transaction,
int32_t event)
{
bool isClosing = is_closing_event(event);
bool isWritten = is_written_event(event);
ListenerList::Iterator iterator = transaction->listeners.GetIterator();
while (iterator.HasNext()) {
cache_listener* listener = iterator.Next();
bool remove = (isClosing && !is_written_event(listener->events))
|| (isWritten && is_written_event(listener->events));
if (remove)
iterator.Remove();
if ((listener->events & event) != 0)
add_notification(cache, listener, event, remove);
else if (remove)
delete_notification(listener);
}
// This must work asynchronously in the kernel, but since we're not using
// most transaction events, we can do it here.
flush_pending_notifications(cache);
}
示例2:
void
Team::_NotifyTeamRenamed()
{
for (ListenerList::Iterator it = fListeners.GetIterator();
Listener* listener = it.Next();) {
listener->TeamRenamed(Event(TEAM_EVENT_TEAM_RENAMED, this));
}
}
示例3:
void
TeamsWindow::_NotifySelectedInterfaceChanged(TargetHostInterface* interface)
{
for (ListenerList::Iterator it = fListeners.GetIterator();
Listener* listener = it.Next();) {
listener->SelectedInterfaceChanged(interface);
}
}
示例4:
void
StackFrame::NotifyValueRetrieved(Variable* variable, TypeComponentPath* path)
{
for (ListenerList::Iterator it = fListeners.GetIterator();
Listener* listener = it.Next();) {
listener->StackFrameValueRetrieved(this, variable, path);
}
}
示例5:
/*! Removes and deletes all listeners that are still monitoring this
transaction.
*/
static void
remove_transaction_listeners(block_cache* cache, cache_transaction* transaction)
{
ListenerList::Iterator iterator = transaction->listeners.GetIterator();
while (iterator.HasNext()) {
cache_listener* listener = iterator.Next();
iterator.Remove();
delete_notification(listener);
}
}
示例6: new
static fssh_status_t
add_transaction_listener(block_cache* cache, cache_transaction* transaction,
int32_t events, fssh_transaction_notification_hook hookFunction, void* data)
{
ListenerList::Iterator iterator = transaction->listeners.GetIterator();
while (iterator.HasNext()) {
cache_listener* listener = iterator.Next();
if (listener->data == data && listener->hook == hookFunction) {
// this listener already exists, just update it
listener->events |= events;
return FSSH_B_OK;
}
}
cache_listener* listener = new(std::nothrow) cache_listener;
if (listener == NULL)
return FSSH_B_NO_MEMORY;
set_notification(transaction, *listener, events, hookFunction, data);
transaction->listeners.Add(listener);
return FSSH_B_OK;
}