FunctionList.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include <boost/function.hpp>
  3. template<typename Signature>
  4. class CFunctionList
  5. {
  6. public:
  7. std::vector<boost::function<Signature> > funcs;
  8. CFunctionList(int){};
  9. CFunctionList(){};
  10. CFunctionList(const boost::function<Signature> &first)
  11. {
  12. funcs.push_back(first);
  13. }
  14. CFunctionList(boost::function<Signature> &first)
  15. {
  16. funcs.push_back(first);
  17. }
  18. CFunctionList & operator+=(const boost::function<Signature> &first)
  19. {
  20. funcs.push_back(first);
  21. return *this;
  22. }
  23. const boost::function<Signature> & operator=(const boost::function<Signature> &first)
  24. {
  25. funcs.push_back(first);
  26. return first;
  27. }
  28. operator bool() const
  29. {
  30. return funcs.size();
  31. }
  32. void operator()() const
  33. {
  34. std::vector<boost::function<Signature> > funcs2 = funcs; //backup
  35. for(int i=0;i<funcs2.size(); i++)
  36. funcs2[i]();
  37. }
  38. template <typename Arg>
  39. void operator()(const Arg & a) const
  40. {
  41. std::vector<boost::function<Signature> > funcs2 = funcs; //backup
  42. for(int i=0;i<funcs2.size(); i++)
  43. funcs2[i](a);
  44. }
  45. };