7 #define CNOID_SIGNAL_FUNCTION_N_HEADER CNOID_SIGNAL_CONCAT(<boost/function/function,CNOID_SIGNAL_NUM_ARGS.hpp>) 8 #include CNOID_SIGNAL_FUNCTION_N_HEADER 10 #if CNOID_SIGNAL_NUM_ARGS == 0 11 # define CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS 13 # define CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS , 16 #define CNOID_SIGNAL_SIGNAL CNOID_SIGNAL_CONCAT(Signal,CNOID_SIGNAL_NUM_ARGS) 17 #define CNOID_SIGNAL_FUNCTION CNOID_SIGNAL_CONCAT(boost::function,CNOID_SIGNAL_NUM_ARGS) 18 #define CNOID_SIGNAL_SLOT_HOLDER CNOID_SIGNAL_CONCAT(SlotHolder,CNOID_SIGNAL_NUM_ARGS) 19 #define CNOID_SIGNAL_ARGSET CNOID_SIGNAL_CONCAT(ArgSet,CNOID_SIGNAL_NUM_ARGS) 28 typename Combiner = signal_private::last_value<R>
33 namespace signal_private {
43 typedef CNOID_SIGNAL_FUNCTION<R CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS CNOID_SIGNAL_TEMPLATE_ARGS>
FuncType;
57 : func(func), prev(0), owner(0) {
61 if(owner) owner->
remove(
this);
89 template<
typename SlotHolderType>
90 R call(SlotHolderType* slot) {
106 typedef CNOID_SIGNAL_FUNCTION<R CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS CNOID_SIGNAL_TEMPLATE_ARGS>
slot_function_type;
108 typedef slot_function_type
Slot;
120 SlotHolderPtr firstSlot;
121 SlotHolderType* lastSlot;
130 disconnect_all_slots();
135 SlotHolderType* slot =
new SlotHolderType(func);
141 lastSlot->
next = slot;
142 slot->
prev = lastSlot;
150 void remove(SlotHolderPtr slot){
151 if(slot->owner ==
this){
152 SlotHolderType*
next = slot->next;
171 if(slot->owner ==
this){
173 if(firstSlot != slot){
177 slot->next = firstSlot;
178 slot->next->prev = slot;
183 if(lastSlot != slot){
187 lastSlot->
next = slot;
188 slot->prev = lastSlot;
205 return (firstSlot == 0);
210 #if CNOID_SIGNAL_NUM_ARGS == 0 217 return combiner(IteratorType(firstSlot, args), IteratorType(0, args));
224 #undef CNOID_SIGNAL_FUNCTION_N_HEADER 225 #undef CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS 226 #undef CNOID_SIGNAL_SIGNAL 227 #undef CNOID_SIGNAL_FUNCTION 228 #undef CNOID_SIGNAL_SLOT_HOLDER 229 #undef CNOID_SIGNAL_ARGSET ~CNOID_SIGNAL_SIGNAL()
Definition: SignalTemplate.h:129
CNOID_SIGNAL_SIGNAL()
Definition: SignalTemplate.h:127
void remove(SlotHolderPtr slot)
Definition: SignalTemplate.h:150
Definition: SignalTemplate.h:111
bool empty() const
Definition: SignalTemplate.h:204
R result_type
Definition: SignalTemplate.h:105
CNOID_SIGNAL_SLOT_HOLDER SlotHolder
Definition: SignalTemplate.h:46
#define CNOID_SIGNAL_TEMPLATE_PARMS
Definition: Signal.h:238
CNOID_SIGNAL_FUNCTION< R CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS CNOID_SIGNAL_TEMPLATE_ARGS > slot_function_type
Definition: SignalTemplate.h:106
#define CNOID_SIGNAL_SIGNAL
Definition: SignalTemplate.h:16
CNOID_SIGNAL_SIGNAL< R, CNOID_SIGNAL_TEMPLATE_ARGS CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS Combiner > SignalType
Definition: SignalTemplate.h:50
CNOID_SIGNAL_FUNCTION< R CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS CNOID_SIGNAL_TEMPLATE_ARGS > FuncType
Definition: SignalTemplate.h:43
virtual bool connected() const
Definition: SignalTemplate.h:64
result_type operator()(CNOID_SIGNAL_PARMS)
Definition: SignalTemplate.h:208
void changeOrder(SlotHolderPtr slot, int orderId)
Definition: SignalTemplate.h:170
#define CNOID_SIGNAL_ARGS_AS_MEMBERS
Definition: Signal.h:242
#define CNOID_SIGNAL_COMMA_IF_NONZERO_ARGS
Definition: SignalTemplate.h:11
#define CNOID_SIGNAL_COPY_PARMS
Definition: Signal.h:243
slot_function_type Slot
Definition: SignalTemplate.h:108
CNOID_SIGNAL_SLOT_HOLDER(const FuncType &func)
Definition: SignalTemplate.h:56
#define CNOID_SIGNAL_PARMS
Definition: Signal.h:240
#define CNOID_SIGNAL_ARGS
Definition: Signal.h:241
virtual void disconnect()
Definition: SignalTemplate.h:60
void disconnect_all_slots()
Definition: SignalTemplate.h:198
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: SignalTemplate.h:41
FuncType func
Definition: SignalTemplate.h:44
R result_type
Definition: SignalTemplate.h:54
Combiner combiner_type
Definition: SignalTemplate.h:110
#define CNOID_SIGNAL_INIT_ARGS
Definition: Signal.h:244
Definition: SignalTemplate.h:82
slot_function_type slot_type
Definition: SignalTemplate.h:107
Connection connect(const slot_function_type &func)
Definition: SignalTemplate.h:133
SlotHolderPtr next
Definition: SignalTemplate.h:48
Definition: SignalTemplate.h:30
SignalType * owner
Definition: SignalTemplate.h:51
Definition: SignalTemplate.h:112
#define CNOID_SIGNAL_ARGSET
Definition: SignalTemplate.h:19
SlotHolder * prev
Definition: SignalTemplate.h:49
ref_ptr< SlotHolder > SlotHolderPtr
Definition: SignalTemplate.h:47
virtual void changeOrder(int orderId)
Definition: SignalTemplate.h:68