@@ -93,6 +93,84 @@ struct make_holder<3>
9393 };
9494};
9595
96+ template <>
97+ struct make_holder <4 >
98+ {
99+ template <class T , class Generator , class ArgList >
100+ struct apply
101+ {
102+ typedef typename detail::eval<Generator,T>::type holder;
103+ typedef typename mpl::at<0 ,ArgList>::type t0;
104+ typedef typename forward<t0>::type f0;
105+ typedef typename mpl::at<1 ,ArgList>::type t1;
106+ typedef typename forward<t1>::type f1;
107+ typedef typename mpl::at<2 ,ArgList>::type t2;
108+ typedef typename forward<t2>::type f2;
109+ typedef typename mpl::at<3 ,ArgList>::type t3;
110+ typedef typename forward<t3>::type f3;
111+
112+ static void execute (
113+ PyObject* p, t0 a0, t1 a1, t2 a2, t3 a3)
114+ {
115+ (new holder (p, f0 (a0), f1 (a1), f2 (a2), f3 (a3)))->install (p);
116+ }
117+ };
118+ };
119+
120+ template <>
121+ struct make_holder <5 >
122+ {
123+ template <class T , class Generator , class ArgList >
124+ struct apply
125+ {
126+ typedef typename detail::eval<Generator,T>::type holder;
127+ typedef typename mpl::at<0 ,ArgList>::type t0;
128+ typedef typename forward<t0>::type f0;
129+ typedef typename mpl::at<1 ,ArgList>::type t1;
130+ typedef typename forward<t1>::type f1;
131+ typedef typename mpl::at<2 ,ArgList>::type t2;
132+ typedef typename forward<t2>::type f2;
133+ typedef typename mpl::at<3 ,ArgList>::type t3;
134+ typedef typename forward<t3>::type f3;
135+ typedef typename mpl::at<4 ,ArgList>::type t4;
136+ typedef typename forward<t4>::type f4;
137+
138+ static void execute (
139+ PyObject* p, t0 a0, t1 a1, t2 a2, t3 a3, t4 a4)
140+ {
141+ (new holder (p, f0 (a0), f1 (a1), f2 (a2), f3 (a3), f4 (a4)))->install (p);
142+ }
143+ };
144+ };
145+
146+ template <>
147+ struct make_holder <6 >
148+ {
149+ template <class T , class Generator , class ArgList >
150+ struct apply
151+ {
152+ typedef typename detail::eval<Generator,T>::type holder;
153+ typedef typename mpl::at<0 ,ArgList>::type t0;
154+ typedef typename forward<t0>::type f0;
155+ typedef typename mpl::at<1 ,ArgList>::type t1;
156+ typedef typename forward<t1>::type f1;
157+ typedef typename mpl::at<2 ,ArgList>::type t2;
158+ typedef typename forward<t2>::type f2;
159+ typedef typename mpl::at<3 ,ArgList>::type t3;
160+ typedef typename forward<t3>::type f3;
161+ typedef typename mpl::at<4 ,ArgList>::type t4;
162+ typedef typename forward<t4>::type f4;
163+ typedef typename mpl::at<5 ,ArgList>::type t5;
164+ typedef typename forward<t5>::type f5;
165+
166+ static void execute (
167+ PyObject* p, t0 a0, t1 a1, t2 a2, t3 a3, t4 a4, t5 a5)
168+ {
169+ (new holder (p, f0 (a0), f1 (a1), f2 (a2), f3 (a3), f4 (a4), f5 (a5)))->install (p);
170+ }
171+ };
172+ };
173+
96174}}} // namespace boost::python::objects
97175
98176#endif // MAKE_HOLDER_DWA20011215_HPP
0 commit comments