sy_helpers.hpp
Go to the documentation of this file.
1 /**********************************************************************
2  * sy_helpers.hpp -- Helper primitives in the SY MoC *
3  * *
4  * Author: Hosein Attarzadeh (shan2@kth.se) *
5  * *
6  * Purpose: Providing helper primitives for modeling in the SY MoC *
7  * *
8  * Usage: This file is included automatically *
9  * *
10  * License: BSD3 *
11  *******************************************************************/
12 
13 #ifndef SY_HELPERS_HPP
14 #define SY_HELPERS_HPP
15 
23 #include <functional>
24 #include <tuple>
25 
26 #include "abst_ext.hpp"
28 
29 namespace ForSyDe
30 {
31 
32 namespace SY
33 {
34 
35 using namespace sc_core;
36 
38 
44 template <class T0, template <class> class OIf,
45  class T1, template <class> class I1If>
46 inline comb<T0,T1>* make_comb(const std::string& pName,
47  const typename comb<T0,T1>::functype& _func,
48  OIf<T0>& outS,
49  I1If<T1>& inp1S
50  )
51 {
52  auto p = new comb<T0,T1>(pName.c_str(), _func);
53 
54  (*p).iport1(inp1S);
55  (*p).oport1(outS);
56 
57  return p;
58 }
59 
61 
67 template <class T0, template <class> class OIf,
68  class T1, template <class> class I1If,
69  class T2, template <class> class I2If>
70 inline comb2<T0,T1,T2>* make_comb2(const std::string& pName,
71  const typename comb2<T0,T1,T2>::functype& _func,
72  OIf<T0>& outS,
73  I1If<T1>& inp1S,
74  I2If<T2>& inp2S
75  )
76 {
77  auto p = new comb2<T0,T1,T2>(pName.c_str(), _func);
78 
79  (*p).iport1(inp1S);
80  (*p).iport2(inp2S);
81  (*p).oport1(outS);
82 
83  return p;
84 }
85 
87 
93 template <class T0, template <class> class OIf,
94  class T1, template <class> class I1If,
95  class T2, template <class> class I2If,
96  class T3, template <class> class I3If>
97 inline comb3<T0,T1,T2,T3>* make_comb3(const std::string& pName,
98  const typename comb3<T0,T1,T2,T3>::functype& _func,
99  OIf<T0>& outS,
100  I1If<T1>& inp1S,
101  I2If<T2>& inp2S,
102  I3If<T3>& inp3S
103  )
104 {
105  auto p = new comb3<T0,T1,T2,T3>(pName.c_str(), _func);
106 
107  (*p).iport1(inp1S);
108  (*p).iport2(inp2S);
109  (*p).iport3(inp3S);
110  (*p).oport1(outS);
111 
112  return p;
113 }
114 
116 
122 template <class T0, template <class> class OIf,
123  class T1, template <class> class I1If,
124  class T2, template <class> class I2If,
125  class T3, template <class> class I3If,
126  class T4, template <class> class I4If>
127 inline comb4<T0,T1,T2,T3,T4>* make_comb4(const std::string& pName,
128  const typename comb4<T0,T1,T2,T3,T4>::functype& _func,
129  OIf<T0>& outS,
130  I1If<T1>& inp1S,
131  I2If<T2>& inp2S,
132  I3If<T3>& inp3S,
133  I4If<T4>& inp4S
134  )
135 {
136  auto p = new comb4<T0,T1,T2,T3,T4>(pName.c_str(), _func);
137 
138  (*p).iport1(inp1S);
139  (*p).iport2(inp2S);
140  (*p).iport3(inp3S);
141  (*p).iport4(inp4S);
142  (*p).oport1(outS);
143 
144  return p;
145 }
146 
148 
154 template <class T0, template <class> class OIf,
155  class T1, template <class> class IIf,
156  std::size_t N>
157 inline combX<T0,T1,N>* make_combX(const std::string& pName,
158  const typename combX<T0,T1,N>::functype& _func,
159  OIf<T0>& outS,
160  std::array<IIf<T1>,N>& inpS
161  )
162 {
163  auto p = new combX<T0,T1,N>(pName.c_str(), _func);
164 
165  for (int i=0;i<N;i++)
166  (*p).iport[i](inpS[i]);
167  (*p).oport1(outS);
168 
169  return p;
170 }
171 
173 
179 template <typename T, template <class> class IIf,
180  template <class> class OIf>
181 inline delay<T>* make_delay(const std::string& pName,
182  const abst_ext<T>& initval,
183  OIf<T>& outS,
184  IIf<T>& inpS
185  )
186 {
187  auto p = new delay<T>(pName.c_str(), initval);
188 
189  (*p).iport1(inpS);
190  (*p).oport1(outS);
191 
192  return p;
193 }
194 
196 
202 template <typename T, template <class> class IIf,
203  template <class> class OIf>
204 inline delayn<T>* make_delayn(const std::string& pName,
205  const abst_ext<T>& initval,
206  const unsigned int& n,
207  OIf<T>& outS,
208  IIf<T>& inpS
209  )
210 {
211  auto p = new delayn<T>(pName.c_str(), initval, n);
212 
213  (*p).iport1(inpS);
214  (*p).oport1(outS);
215 
216  return p;
217 }
218 
220 
226 template <typename IT, typename ST, typename OT,
227  template <class> class IIf,
228  template <class> class OIf>
229 inline moore<IT,ST,OT>* make_moore(const std::string& pName,
230  const typename moore<IT,ST,OT>::ns_functype& _ns_func,
231  const typename moore<IT,ST,OT>::od_functype& _od_func,
232  const ST& init_st,
233  OIf<OT>& outS,
234  IIf<IT>& inpS
235  )
236 {
237  auto p = new moore<IT,ST,OT>(pName.c_str(), _ns_func, _od_func, init_st);
238 
239  (*p).iport1(inpS);
240  (*p).oport1(outS);
241 
242  return p;
243 }
244 
246 
252 template <typename IT, typename ST, typename OT,
253  template <class> class IIf,
254  template <class> class OIf>
255 inline mealy<IT,ST,OT>* make_mealy(const std::string& pName,
256  const typename mealy<IT,ST,OT>::ns_functype& _ns_func,
257  const typename mealy<IT,ST,OT>::od_functype& _od_func,
258  const ST& init_st,
259  OIf<OT>& outS,
260  IIf<IT>& inpS
261  )
262 {
263  auto p = new mealy<IT,ST,OT>(pName.c_str(), _ns_func, _od_func, init_st);
264 
265  (*p).iport1(inpS);
266  (*p).oport1(outS);
267 
268  return p;
269 }
270 
272 
278 template <typename T, template <class> class IIf,
279  template <class> class OIf>
280 inline fill<T>* make_fill(const std::string& pName,
281  const T& def_val,
282  OIf<T>& outS,
283  IIf<T>& inpS
284  )
285 {
286  auto p = new fill<T>(pName.c_str(), def_val);
287 
288  (*p).iport1(inpS);
289  (*p).oport1(outS);
290 
291  return p;
292 }
293 
295 
301 template <typename T, template <class> class IIf,
302  template <class> class OIf>
303 inline hold<T>* make_hold(const std::string& pName,
304  const T& def_val,
305  OIf<T>& outS,
306  IIf<T>& inpS
307  )
308 {
309  auto p = new hold<T>(pName.c_str(), def_val);
310 
311  (*p).iport1(inpS);
312  (*p).oport1(outS);
313 
314  return p;
315 }
316 
318 
324 template <typename T, template <class> class IIf,
325  template <class> class OIf>
326 inline group<T>* make_group(const std::string& pName,
327  const unsigned long& samples,
328  OIf<std::vector<abst_ext<T>>>& outS,
329  IIf<T>& inpS
330  )
331 {
332  auto p = new group<T>(pName.c_str(), samples);
333 
334  (*p).iport1(inpS);
335  (*p).oport1(outS);
336 
337  return p;
338 }
339 
341 
347 template <class T, template <class> class OIf>
348 inline constant<T>* make_constant(const std::string& pName,
349  const abst_ext<T>& initval,
350  const unsigned long long& take,
351  OIf<T>& outS
352  )
353 {
354  auto p = new constant<T>(pName.c_str(), initval, take);
355 
356  (*p).oport1(outS);
357 
358  return p;
359 }
360 
362 
368 template <class T, template <class> class OIf>
369 inline source<T>* make_source(const std::string& pName,
370  const typename source<T>::functype& _func,
371  const abst_ext<T>& initval,
372  const unsigned long long& take,
373  OIf<T>& outS
374  )
375 {
376  auto p = new source<T>(pName.c_str(), _func, initval, take);
377 
378  (*p).oport1(outS);
379 
380  return p;
381 }
382 
384 
390 template <class T, template <class> class OIf>
391 inline file_source<T>* make_file_source(std::string pName,
392  typename file_source<T>::functype _func,
393  std::string file_name,
394  OIf<T>& outS
395  )
396 {
397  auto p = new file_source<T>(pName.c_str(), _func, file_name);
398 
399  (*p).oport1(outS);
400 
401  return p;
402 }
403 
405 
411 template <class T, template <class> class OIf>
412 inline vsource<T>* make_vsource(const std::string& pName,
413  const std::vector<abst_ext<T>>& in_vec,
414  OIf<T>& outS
415  )
416 {
417  auto p = new vsource<T>(pName.c_str(), in_vec);
418 
419  (*p).oport1(outS);
420 
421  return p;
422 }
423 
425 
431 template <class T, template <class> class IIf>
432 inline sink<T>* make_sink(const std::string& pName,
433  const typename sink<T>::functype& _func,
434  IIf<T>& inS
435  )
436 {
437  auto p = new sink<T>(pName.c_str(), _func);
438 
439  (*p).iport1(inS);
440 
441  return p;
442 }
443 
445 
451 template <class T, template <class> class IIf>
452 inline file_sink<T>* make_file_sink(std::string pName,
453  typename file_sink<T>::functype _func,
454  std::string file_name,
455  IIf<T>& inS
456  )
457 {
458  auto p = new file_sink<T>(pName.c_str(), _func, file_name);
459 
460  (*p).iport1(inS);
461 
462  return p;
463 }
464 
466 
472 template <class T1, template <class> class I1If,
473  class T2, template <class> class I2If,
474  template <class> class OIf>
475 inline zip<T1,T2>* make_zip(const std::string& pName,
476  OIf<std::tuple<abst_ext<T1>,abst_ext<T2>>>& outS,
477  I1If<T1>& inp1S,
478  I2If<T2>& inp2S
479  )
480 {
481  auto p = new zip<T1,T2>(pName.c_str());
482 
483  (*p).iport1(inp1S);
484  (*p).iport2(inp2S);
485  (*p).oport1(outS);
486 
487  return p;
488 }
489 
491 
498 template <class T1, std::size_t N,
499  template <class> class OIf>
500 inline zipX<T1,N>* make_zipX(const std::string& pName,
501  OIf<std::array<abst_ext<T1>,N>>& outS
502  )
503 {
504  auto p = new zipX<T1,N>(pName.c_str());
505 
506  (*p).oport1(outS);
507 
508  return p;
509 }
510 
512 
518 template <template <class> class IIf,
519  class T1, template <class> class O1If,
520  class T2, template <class> class O2If>
521 inline unzip<T1,T2>* make_unzip(const std::string& pName,
522  IIf<std::tuple<abst_ext<T1>,abst_ext<T2>>>& inpS,
523  O1If<T1>& out1S,
524  O2If<T2>& out2S
525  )
526 {
527  auto p = new unzip<T1,T2>(pName.c_str());
528 
529  (*p).iport1(inpS);
530  (*p).oport1(out1S);
531  (*p).oport2(out2S);
532 
533  return p;
534 }
535 
537 
544 template <template <class> class IIf,
545  class T1, std::size_t N>
546 inline unzipX<T1,N>* make_unzipX(const std::string& pName,
547  IIf<std::array<abst_ext<T1>,N>>& inpS
548  )
549 {
550  auto p = new unzipX<T1,N>(pName.c_str());
551 
552  (*p).iport1(inpS);
553 
554  return p;
555 }
556 
558 
564 template <typename T, template <class> class IIf,
565  template <class> class OIf>
566 inline fanout<T>* make_fanout(const std::string& pName,
567  OIf<T>& outS,
568  IIf<T>& inpS
569  )
570 {
571  auto p = new fanout<T>(pName.c_str());
572 
573  (*p).iport1(inpS);
574  (*p).oport1(outS);
575 
576  return p;
577 }
578 
579 
580 }
581 }
582 
583 #endif
source< T > * make_source(const std::string &pName, const typename source< T >::functype &_func, const abst_ext< T > &initval, const unsigned long long &take, OIf< T > &outS)
Helper function to construct a source process.
Definition: sy_helpers.hpp:369
Process constructor for a hold process.
Definition: sy_process_constructors.hpp:942
file_sink< T > * make_file_sink(std::string pName, typename file_sink< T >::functype _func, std::string file_name, IIf< T > &inS)
Helper function to construct a file_sink process.
Definition: sy_helpers.hpp:452
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:1976
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:1342
Implements the basic process constructors in the SY MoC.
SY_in< T1 > iport1
port for the input channel 1
Definition: sy_process_constructors.hpp:130
constant< T > * make_constant(const std::string &pName, const abst_ext< T > &initval, const unsigned long long &take, OIf< T > &outS)
Helper function to construct a constant source process.
Definition: sy_helpers.hpp:348
unzipX< T1, N > * make_unzipX(const std::string &pName, IIf< std::array< abst_ext< T1 >, N >> &inpS)
Helper function to construct an unzipX process.
Definition: sy_helpers.hpp:546
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:868
std::function< void(std::string &, const abst_ext< T > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:1417
The group process with one input and one absent-extended output.
Definition: sy_process_constructors.hpp:1973
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:945
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:1414
mealy< IT, ST, OT > * make_mealy(const std::string &pName, const typename mealy< IT, ST, OT >::ns_functype &_ns_func, const typename mealy< IT, ST, OT >::od_functype &_od_func, const ST &init_st, OIf< OT > &outS, IIf< IT > &inpS)
Helper function to construct a mealy process.
Definition: sy_helpers.hpp:255
sink< T > * make_sink(const std::string &pName, const typename sink< T >::functype &_func, IIf< T > &inS)
Helper function to construct a sink process.
Definition: sy_helpers.hpp:432
The namespace for ForSyDe.
Definition: abssemantics.hpp:30
fill< T > * make_fill(const std::string &pName, const T &def_val, OIf< T > &outS, IIf< T > &inpS)
Helper function to construct a fill process.
Definition: sy_helpers.hpp:280
moore< IT, ST, OT > * make_moore(const std::string &pName, const typename moore< IT, ST, OT >::ns_functype &_ns_func, const typename moore< IT, ST, OT >::od_functype &_od_func, const ST &init_st, OIf< OT > &outS, IIf< IT > &inpS)
Helper function to construct a moore process.
Definition: sy_helpers.hpp:229
Process constructor for a file_sink process.
Definition: sy_process_constructors.hpp:1411
std::function< void(abst_ext< T > &, const std::string &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:1190
std::function< void(abst_ext< T > &, const abst_ext< T > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:1098
Process constructor for a fill process.
Definition: sy_process_constructors.hpp:865
Implements the Absent-extended values.
Process constructor for a delay element.
Definition: sy_process_constructors.hpp:494
SY_in< T1 > iport1
port for the input channel 1
Definition: sy_process_constructors.hpp:216
Process constructor for a n-delay element.
Definition: sy_process_constructors.hpp:570
SY_in< T1 > iport1
port for the input channel 1
Definition: sy_process_constructors.hpp:310
Process constructor for a combinational process with four inputs and one output.
Definition: sy_process_constructors.hpp:307
Process constructor for a constant source process.
Definition: sy_process_constructors.hpp:1020
SY_in< T1 > iport1
port for the input channel 1
Definition: sy_process_constructors.hpp:1499
group< T > * make_group(const std::string &pName, const unsigned long &samples, OIf< std::vector< abst_ext< T >>> &outS, IIf< T > &inpS)
Helper function to construct a group process.
Definition: sy_helpers.hpp:326
Process constructor for a combinational process with an array of inputs and one output.
Definition: sy_process_constructors.hpp:408
SY_out< T > oport1
port for the output channel
Definition: sy_process_constructors.hpp:1187
Process constructor for a Mealy machine.
Definition: sy_process_constructors.hpp:761
vsource< T > * make_vsource(const std::string &pName, const std::vector< abst_ext< T >> &in_vec, OIf< T > &outS)
Helper function to construct a vector source process.
Definition: sy_helpers.hpp:412
SY_out< T > oport1
port for the output channel
Definition: sy_process_constructors.hpp:1023
comb2< T0, T1, T2 > * make_comb2(const std::string &pName, const typename comb2< T0, T1, T2 >::functype &_func, OIf< T0 > &outS, I1If< T1 > &inp1S, I2If< T2 > &inp2S)
Helper function to construct a comb2 process.
Definition: sy_helpers.hpp:70
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:2064
std::array< SY_in< T1 >, N > iport
port for the input channel 1
Definition: sy_process_constructors.hpp:411
comb< T0, T1 > * make_comb(const std::string &pName, const typename comb< T0, T1 >::functype &_func, OIf< T0 > &outS, I1If< T1 > &inp1S)
Helper function to construct a comb process.
Definition: sy_helpers.hpp:46
std::function< void(abst_ext< OT > &, const ST &)> od_functype
Type of the output-decoding function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:659
std::function< void(abst_ext< T0 > &, const abst_ext< T1 > &, const abst_ext< T2 > &, const abst_ext< T3 > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:224
std::function< void(abst_ext< T0 > &, const abst_ext< T1 > &, const abst_ext< T2 > &, const abst_ext< T3 > &, const abst_ext< T4 > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:320
SY_in< IT > iport1
port for the input channel
Definition: sy_process_constructors.hpp:764
Process constructor for a source process.
Definition: sy_process_constructors.hpp:1092
Process constructor for a combinational process with three inputs and one output. ...
Definition: sy_process_constructors.hpp:213
zip< T1, T2 > * make_zip(const std::string &pName, OIf< std::tuple< abst_ext< T1 >, abst_ext< T2 >>> &outS, I1If< T1 > &inp1S, I2If< T2 > &inp2S)
Helper function to construct a zip process.
Definition: sy_helpers.hpp:475
zipX< T1, N > * make_zipX(const std::string &pName, OIf< std::array< abst_ext< T1 >, N >> &outS)
Helper function to construct a zipX process.
Definition: sy_helpers.hpp:500
SY_in< std::tuple< abst_ext< T1 >, abst_ext< T2 > > > iport1
port for the input channel
Definition: sy_process_constructors.hpp:1715
std::function< void(abst_ext< T0 > &, const abst_ext< T1 > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:54
Process constructor for a sink process.
Definition: sy_process_constructors.hpp:1339
Process constructor for a fan-out process with one input and one output.
Definition: sy_process_constructors.hpp:2061
Process constructor for a source process with vector input.
Definition: sy_process_constructors.hpp:1273
Process constructor for a Moore machine.
Definition: sy_process_constructors.hpp:649
combX< T0, T1, N > * make_combX(const std::string &pName, const typename combX< T0, T1, N >::functype &_func, OIf< T0 > &outS, std::array< IIf< T1 >, N > &inpS)
Helper function to construct a combX process.
Definition: sy_helpers.hpp:157
Process constructor for a combinational process with two inputs and one output.
Definition: sy_process_constructors.hpp:127
unzip< T1, T2 > * make_unzip(const std::string &pName, IIf< std::tuple< abst_ext< T1 >, abst_ext< T2 >>> &inpS, O1If< T1 > &out1S, O2If< T2 > &out2S)
Helper function to construct an unzip process.
Definition: sy_helpers.hpp:521
std::function< void(abst_ext< T0 > &, const abst_ext< T1 > &, const abst_ext< T2 > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:136
comb3< T0, T1, T2, T3 > * make_comb3(const std::string &pName, const typename comb3< T0, T1, T2, T3 >::functype &_func, OIf< T0 > &outS, I1If< T1 > &inp1S, I2If< T2 > &inp2S, I3If< T3 > &inp3S)
Helper function to construct a comb3 process.
Definition: sy_helpers.hpp:97
The zip process with two inputs and one output.
Definition: sy_process_constructors.hpp:1496
The unzip process with one input and two outputs.
Definition: sy_process_constructors.hpp:1712
comb4< T0, T1, T2, T3, T4 > * make_comb4(const std::string &pName, const typename comb4< T0, T1, T2, T3, T4 >::functype &_func, OIf< T0 > &outS, I1If< T1 > &inp1S, I2If< T2 > &inp2S, I3If< T3 > &inp3S, I4If< T4 > &inp4S)
Helper function to construct a comb4 process.
Definition: sy_helpers.hpp:127
std::function< void(const abst_ext< T > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:1345
SY_in< std::array< abst_ext< T1 >, N > > iport1
port for the input channel
Definition: sy_process_constructors.hpp:1784
delayn< T > * make_delayn(const std::string &pName, const abst_ext< T > &initval, const unsigned int &n, OIf< T > &outS, IIf< T > &inpS)
Helper function to construct a delayn process.
Definition: sy_helpers.hpp:204
std::function< void(ST &, const ST &, const abst_ext< IT > &)> ns_functype
Type of the next-state function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:769
delay< T > * make_delay(const std::string &pName, const abst_ext< T > &initval, OIf< T > &outS, IIf< T > &inpS)
Helper function to construct a delay process.
Definition: sy_helpers.hpp:181
std::function< void(abst_ext< OT > &, const ST &, const abst_ext< IT > &)> od_functype
Type of the output-decoding function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:773
Absent-extended data types.
Definition: abst_ext.hpp:32
SY_out< std::array< abst_ext< T1 >, N > > oport1
port for the output channel
Definition: sy_process_constructors.hpp:1575
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:573
SY_in< IT > iport1
port for the input channel
Definition: sy_process_constructors.hpp:652
hold< T > * make_hold(const std::string &pName, const T &def_val, OIf< T > &outS, IIf< T > &inpS)
Helper function to construct a hold process.
Definition: sy_helpers.hpp:303
SY_in< T1 > iport1
port for the input channel
Definition: sy_process_constructors.hpp:50
SY_in< T > iport1
port for the input channel
Definition: sy_process_constructors.hpp:497
Process constructor for a file_source process.
Definition: sy_process_constructors.hpp:1184
SY_out< T > oport1
port for the output channel
Definition: sy_process_constructors.hpp:1095
std::function< void(ST &, const ST &, const abst_ext< IT > &)> ns_functype
Type of the next-state function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:656
file_source< T > * make_file_source(std::string pName, typename file_source< T >::functype _func, std::string file_name, OIf< T > &outS)
Helper function to construct a file_source process.
Definition: sy_helpers.hpp:391
Process constructor for a combinational process with one input and one output.
Definition: sy_process_constructors.hpp:47
The unzipX process with one input and an array of outputs.
Definition: sy_process_constructors.hpp:1781
SY_out< T > oport1
port for the output channel
Definition: sy_process_constructors.hpp:1276
The zipX process with an array of inputs and one output.
Definition: sy_process_constructors.hpp:1571
fanout< T > * make_fanout(const std::string &pName, OIf< T > &outS, IIf< T > &inpS)
Helper function to construct a fanout process.
Definition: sy_helpers.hpp:566
std::function< void(abst_ext< T0 > &, const std::array< abst_ext< T1 >, N > &)> functype
Type of the function to be passed to the process constructor.
Definition: sy_process_constructors.hpp:415