![]() |
VR-Vantage 1.4.1 API Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: event_signal.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef event_signal_H_ 00014 #define event_signal_H_ 00015 00016 #include <boost/signals.hpp> 00017 #include <boost/bind.hpp> 00018 #include <boost/type_traits/function_traits.hpp> 00019 #include <vrvUtil/DtEventQueueInterface.h> 00020 00021 namespace makVrv 00022 { 00023 00039 template 00040 < 00041 typename Signature, 00042 typename Combiner = boost::last_value<typename boost::function_traits<Signature>::result_type>, 00043 typename Group = int, 00044 typename GroupCompare = std::less<Group>, 00045 typename SlotFunction = boost::function<Signature> 00046 > 00047 class event_signal : public boost::signal<Signature,Combiner,Group,GroupCompare,SlotFunction> 00048 { 00049 public: 00050 typedef event_signal<Signature,Combiner,Group,GroupCompare,SlotFunction> this_type; 00051 typedef boost::function_traits<Signature> traits; 00052 00054 template <typename ClassType> 00055 event_signal(this_type& (ClassType::*accessor)(), DtEventQueueInterface& i); 00056 00058 template <typename ClassType> 00059 event_signal(this_type ClassType::*asMemberPointer, DtEventQueueInterface& i); 00060 }; 00061 00062 } 00063 00064 #define event_signal_INL_ 00065 #include <vrvUtil/event_signal.inl> 00066 #undef event_signal_INL_ 00067 00068 #endif 00069