00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef SELECT_H
00012 #define SELECT_H
00013
00014 #ifndef PORT_H
00015 #include "port.h"
00016 #endif
00017
00018 #ifndef SELECTIMPL_H
00019 #include "selectimpl.h"
00020 #endif
00021
00022 class SelectList : private SelectImpl
00023 {
00024 public:
00025 SelectList (const Id& n) : SelectImpl (n) {};
00026
00027 template<class T>
00028 void pushBack(const InPort<T>& p, unsigned int n=1);
00029
00030 template<class T>
00031 void pushBack(const OutPort<T>& p, unsigned int n=1);
00032
00033 unsigned int select ();
00034 };
00035
00036 inline unsigned int select(SelectList& l);
00037
00038 template<class T0, class T1> inline
00039 unsigned int select( InPort<T0>& p0,
00040 InPort<T1>& p1);
00041
00042 template<class T0, class T1> inline
00043 unsigned int select( InPort<T0>& p0,
00044 OutPort<T1>& p1);
00045
00046 template<class T0, class T1> inline
00047 unsigned int select(OutPort<T0>& p0,
00048 OutPort<T1>& p1);
00049
00050 template<class T0, class T1, class T2> inline
00051 unsigned int select( InPort<T0>& p0,
00052 InPort<T1>& p1,
00053 InPort<T2>& p2);
00054
00055 template<class T0, class T1, class T2> inline
00056 unsigned int select( InPort<T0>& p0,
00057 InPort<T1>& p1,
00058 OutPort<T2>& p2);
00059
00060 template<class T0, class T1, class T2> inline
00061 unsigned int select( InPort<T0>& p0,
00062 OutPort<T1>& p1,
00063 OutPort<T2>& p2);
00064
00065 template<class T0, class T1, class T2> inline
00066 unsigned int select(OutPort<T0>& p0,
00067 OutPort<T1>& p1,
00068 OutPort<T2>& p2);
00069
00070 template<class T0, class T1, class T2, class T3> inline
00071 unsigned int select( InPort<T0>& p0,
00072 InPort<T1>& p1,
00073 InPort<T2>& p2,
00074 InPort<T3>& p3);
00075
00076 template<class T0, class T1, class T2, class T3> inline
00077 unsigned int select( InPort<T0>& p0,
00078 InPort<T1>& p1,
00079 InPort<T2>& p2,
00080 OutPort<T3>& p3);
00081
00082 template<class T0, class T1, class T2, class T3> inline
00083 unsigned int select( InPort<T0>& p0,
00084 InPort<T1>& p1,
00085 OutPort<T2>& p2,
00086 OutPort<T3>& p3);
00087
00088 template<class T0, class T1, class T2, class T3> inline
00089 unsigned int select( InPort<T0>& p0,
00090 OutPort<T1>& p1,
00091 OutPort<T2>& p2,
00092 OutPort<T3>& p3);
00093
00094 template<class T0, class T1, class T2, class T3> inline
00095 unsigned int select(OutPort<T0>& p0,
00096 OutPort<T1>& p1,
00097 OutPort<T2>& p2,
00098 OutPort<T3>& p3);
00099
00101
00102 template<class T0, class T1> inline
00103 unsigned int select( InPort<T0>& p0, unsigned int n0,
00104 InPort<T1>& p1, unsigned int n1);
00105
00106 template<class T0, class T1> inline
00107 unsigned int select( InPort<T0>& p0, unsigned int n0,
00108 OutPort<T1>& p1, unsigned int n1);
00109
00110 template<class T0, class T1> inline
00111 unsigned int select(OutPort<T0>& p0, unsigned int n0,
00112 OutPort<T1>& p1, unsigned int n1);
00113
00114 template<class T0, class T1, class T2> inline
00115 unsigned int select( InPort<T0>& p0, unsigned int n0,
00116 InPort<T1>& p1, unsigned int n1,
00117 InPort<T2>& p2, unsigned int n2);
00118
00119 template<class T0, class T1, class T2> inline
00120 unsigned int select( InPort<T0>& p0, unsigned int n0,
00121 InPort<T1>& p1, unsigned int n1,
00122 OutPort<T2>& p2, unsigned int n2);
00123
00124 template<class T0, class T1, class T2> inline
00125 unsigned int select( InPort<T0>& p0, unsigned int n0,
00126 OutPort<T1>& p1, unsigned int n1,
00127 OutPort<T2>& p2, unsigned int n2);
00128
00129 template<class T0, class T1, class T2> inline
00130 unsigned int select(OutPort<T0>& p0, unsigned int n0,
00131 OutPort<T1>& p1, unsigned int n1,
00132 OutPort<T2>& p2, unsigned int n2);
00133
00134 template<class T0, class T1, class T2, class T3> inline
00135 unsigned int select( InPort<T0>& p0, unsigned int n0,
00136 InPort<T1>& p1, unsigned int n1,
00137 InPort<T2>& p2, unsigned int n2,
00138 InPort<T3>& p3, unsigned int n3);
00139
00140 template<class T0, class T1, class T2, class T3> inline
00141 unsigned int select( InPort<T0>& p0, unsigned int n0,
00142 InPort<T1>& p1, unsigned int n1,
00143 InPort<T2>& p2, unsigned int n2,
00144 OutPort<T3>& p3, unsigned int n3);
00145
00146 template<class T0, class T1, class T2, class T3> inline
00147 unsigned int select( InPort<T0>& p0, unsigned int n0,
00148 InPort<T1>& p1, unsigned int n1,
00149 OutPort<T2>& p2, unsigned int n2,
00150 OutPort<T3>& p3, unsigned int n3);
00151
00152 template<class T0, class T1, class T2, class T3> inline
00153 unsigned int select( InPort<T0>& p0, unsigned int n0,
00154 OutPort<T1>& p1, unsigned int n1,
00155 OutPort<T2>& p2, unsigned int n2,
00156 OutPort<T3>& p3, unsigned int n3);
00157
00158 template<class T0, class T1, class T2, class T3> inline
00159 unsigned int select(OutPort<T0>& p0, unsigned int n0,
00160 OutPort<T1>& p1, unsigned int n1,
00161 OutPort<T2>& p2, unsigned int n2,
00162 OutPort<T3>& p3, unsigned int n3);
00163
00164
00165
00166
00167 #include "select.cc"
00168
00169 #endif