| 85 | | void opCall(T arg) { |
|---|
| 86 | | foreach( Callback dg; dgs) { |
|---|
| 87 | | if (dg is null) break; |
|---|
| 88 | | dg(arg); |
|---|
| 89 | | } |
|---|
| 90 | | } |
|---|
| 91 | | } |
|---|
| 92 | | |
|---|
| 93 | | // MultiDelegate with two args |
|---|
| 94 | | struct MultiDelegate(T1,T2) { |
|---|
| 95 | | alias void delegate(T1 arg1,T2 arg2) Callback; |
|---|
| 96 | | mixin DelegateMixin!(); |
|---|
| 97 | | void opCall(T1 arg1,T2 arg2) { |
|---|
| 98 | | foreach( Callback dg; dgs) { |
|---|
| 99 | | if (dg is null) break; |
|---|
| 100 | | dg(arg1,arg2); |
|---|
| 101 | | } |
|---|
| 102 | | } |
|---|
| 103 | | } |
|---|
| 104 | | |
|---|
| 105 | | // MultiDelegate with three args |
|---|
| 106 | | struct MultiDelegate(T1,T2,T3) { |
|---|
| 107 | | alias void delegate(T1 arg1,T2 arg2,T3 arg3) Callback; |
|---|
| 108 | | mixin DelegateMixin!(); |
|---|
| 109 | | void opCall(T1 arg1,T2 arg2,T3 arg3) { |
|---|
| 110 | | foreach( Callback dg; dgs) { |
|---|
| 111 | | if (dg is null) break; |
|---|
| 112 | | dg(arg1,arg2,arg3); |
|---|
| 113 | | } |
|---|
| 114 | | } |
|---|
| 115 | | } |
|---|
| 116 | | |
|---|
| 117 | | // MultiDelegate with four args |
|---|
| 118 | | struct MultiDelegate(T1,T2,T3,T4) { |
|---|
| 119 | | alias void delegate(T1 arg1,T2 arg2,T3 arg3,T4 arg4) Callback; |
|---|
| 120 | | mixin DelegateMixin!(); |
|---|
| 121 | | void opCall(T1 arg1,T2 arg2,T3 arg3,T4 arg4) { |
|---|
| 122 | | foreach( Callback dg; dgs) { |
|---|
| 123 | | if (dg is null) break; |
|---|
| 124 | | dg(arg1,arg2,arg3,arg4); |
|---|
| 125 | | } |
|---|
| 126 | | } |
|---|
| 127 | | } |
|---|
| 128 | | |
|---|
| 129 | | // MultiBoolDelegate with no args |
|---|
| 130 | | struct MultiBoolDelegate() { |
|---|
| 131 | | alias bool delegate() Callback; |
|---|
| 132 | | mixin DelegateMixin!(); |
|---|
| 133 | | bool opCall() { |
|---|
| | 86 | bool opCall(T args) { |
|---|
| 137 | | result |= dg(); |
|---|
| 138 | | } |
|---|
| 139 | | return result; |
|---|
| 140 | | } |
|---|
| 141 | | } |
|---|
| 142 | | |
|---|
| 143 | | // MultiBoolDelegate with one arg |
|---|
| 144 | | struct MultiBoolDelegate(T) { |
|---|
| 145 | | alias bool delegate(T arg) Callback; |
|---|
| 146 | | mixin DelegateMixin!(); |
|---|
| 147 | | bool opCall(T arg) { |
|---|
| 148 | | bool result = false; |
|---|
| 149 | | foreach( Callback dg; dgs) { |
|---|
| 150 | | if (dg is null) break; |
|---|
| 151 | | result |= dg(arg); |
|---|
| 152 | | } |
|---|
| 153 | | return result; |
|---|
| 154 | | } |
|---|
| 155 | | } |
|---|
| 156 | | |
|---|
| 157 | | // MultiBoolDelegate with two args |
|---|
| 158 | | struct MultiBoolDelegate(T1,T2) { |
|---|
| 159 | | alias bool delegate(T1 arg1,T2 arg2) Callback; |
|---|
| 160 | | mixin DelegateMixin!(); |
|---|
| 161 | | bool opCall(T1 arg1,T2 arg2) { |
|---|
| 162 | | bool result = false; |
|---|
| 163 | | foreach( Callback dg; dgs) { |
|---|
| 164 | | if (dg is null) break; |
|---|
| 165 | | result |= dg(arg1,arg2); |
|---|
| 166 | | } |
|---|
| 167 | | return result; |
|---|
| 168 | | } |
|---|
| 169 | | } |
|---|
| 170 | | |
|---|
| 171 | | // MultiBoolDelegate with three args |
|---|
| 172 | | struct MultiBoolDelegate(T1,T2,T3) { |
|---|
| 173 | | alias bool delegate(T1 arg1,T2 arg2,T3 arg3) Callback; |
|---|
| 174 | | mixin DelegateMixin!(); |
|---|
| 175 | | bool opCall(T1 arg1,T2 arg2,T3 arg3) { |
|---|
| 176 | | bool result = false; |
|---|
| 177 | | foreach( Callback dg; dgs) { |
|---|
| 178 | | if (dg is null) break; |
|---|
| 179 | | result |= dg(arg1,arg2,arg3); |
|---|
| 180 | | } |
|---|
| 181 | | return result; |
|---|
| 182 | | } |
|---|
| 183 | | } |
|---|
| 184 | | |
|---|
| 185 | | // MultiBoolDelegate with four args |
|---|
| 186 | | struct MultiBoolDelegate(T1,T2,T3,T4) { |
|---|
| 187 | | alias bool delegate(T1 arg1,T2 arg2,T3 arg3,T4 arg4) Callback; |
|---|
| 188 | | mixin DelegateMixin!(); |
|---|
| 189 | | bool opCall(T1 arg1,T2 arg2,T3 arg3,T4 arg4) { |
|---|
| 190 | | bool result = false; |
|---|
| 191 | | foreach( Callback dg; dgs) { |
|---|
| 192 | | if (dg is null) break; |
|---|
| 193 | | result |= dg(arg1,arg2,arg3,arg4); |
|---|
| | 90 | result |= dg(args); |
|---|