-/* Copyright (c) 2014-2015. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#define SIMGRID_XBT_SIGNAL_HPP
#include <functional>
+#include <utility>
#include <vector>
namespace simgrid {
typedef std::function<R(P...)> callback_type;
std::vector<callback_type> handlers_;
public:
- template<class U> XBT_ALWAYS_INLINE
+ template<class U>
void connect(U slot)
{
handlers_.push_back(std::move(slot));
}
- XBT_ALWAYS_INLINE
R operator()(P... args) const
{
- for (auto& handler : handlers_)
+ for (auto const& handler : handlers_)
handler(args...);
}
- void disconnect_all_slots()
- {
- handlers_.clear();
- }
+ void disconnectSlots() { handlers_.clear(); }
+ int getSlotsAmount() { return handlers_.size(); }
};
}