Lines Matching refs:A

154 template<typename A, typename LEN>
155 struct Elem< Array<A, LEN> >
158 typedef Array<A, LEN> arg_type;
160 typedef Array_ref<A, LEN> svr_type;
166 template<typename A, typename LEN>
167 struct Elem< Array<A, LEN> & >
170 typedef Array<A, LEN> &arg_type;
172 typedef Array_ref<A, LEN> svr_type;
179 template<typename A, typename LEN>
180 struct Elem< Array_ref<A, LEN> & >
183 typedef Array_ref<A, LEN> &arg_type;
185 typedef Array_ref<typename L4::Types::Remove_const<A>::type, LEN> svr_type;
191 template<typename A> struct Class<Array<A> > : Class<A>::type {};
192 template<typename A> struct Class<Array_ref<A> > : Class<A>::type {};
196 template<typename A, typename LEN, typename ARRAY, bool REF>
207 offset = align_to<A>(offset + sizeof(LEN));
208 if (L4_UNLIKELY(!check_size<A>(offset, limit, a.length)))
210 typedef typename L4::Types::Remove_const<A>::type elem_type;
218 return offset + a.length * sizeof(A);
223 template<typename A, typename LEN>
224 struct Clnt_val_ops<Array<A, LEN>, Dir_in, Cls_data> :
225 Detail::Clnt_val_ops_d_in<A, LEN, Array<A, LEN>, false> {};
227 template<typename A, typename LEN>
228 struct Clnt_val_ops<Array_ref<A, LEN>, Dir_in, Cls_data> :
229 Detail::Clnt_val_ops_d_in<A, LEN, Array_ref<A, LEN>, true> {};
231 template<typename A, typename LEN, typename CLASS>
232 struct Svr_val_ops< Array_ref<A, LEN>, Dir_in, CLASS >
233 : Svr_noops< Array_ref<A, LEN> >
235 typedef Array_ref<A, LEN> svr_type;
245 offset = align_to<A>(offset + sizeof(LEN));
246 if (L4_UNLIKELY(!check_size<A>(offset, limit, a.length)))
248 a.data = reinterpret_cast<A*>(msg + offset);
249 return offset + a.length * sizeof(A);
253 template<typename A, typename LEN>
254 struct Svr_xmit< Array<A, LEN> > : Svr_xmit< Array_ref<A, LEN> > {};
256 template<typename A, typename LEN>
257 struct Clnt_val_ops<Array<A, LEN>, Dir_out, Cls_data> : Clnt_noops<Array<A, LEN> >
259 typedef Array<A, LEN> type;
271 offset = align_to<A>(offset + sizeof(LEN));
272 if (L4_UNLIKELY(!check_size<A>(offset, limit, l)))
275 A *data = reinterpret_cast<A*>(msg + offset);
285 return offset + l * sizeof(A);
289 template<typename A, typename LEN>
290 struct Clnt_val_ops<Array_ref<A, LEN>, Dir_out, Cls_data> :
291 Clnt_noops<Array_ref<A, LEN> >
293 typedef Array_ref<A, LEN> type;
305 offset = align_to<A>(offset + sizeof(LEN));
306 if (L4_UNLIKELY(!check_size<A>(offset, limit, l)))
309 a.data = reinterpret_cast<A*>(msg + offset);
311 return offset + l * sizeof(A);
315 template<typename A, typename LEN, typename CLASS>
316 struct Svr_val_ops<Array_ref<A, LEN>, Dir_out, CLASS> :
317 Svr_noops<Array_ref<typename L4::Types::Remove_const<A>::type, LEN> &>
319 typedef typename L4::Types::Remove_const<A>::type elem_type;
330 offset = align_to<A>(offset + sizeof(LEN));
332 a.length = (limit-offset) / sizeof(A);
346 offset = align_to<A>(offset + sizeof(LEN));
347 if (L4_UNLIKELY(!check_size<A>(offset, limit, a.length)))
350 return offset + a.length * sizeof(A);
354 template<typename A, typename LEN>
355 struct Svr_xmit<Array<A, LEN> &> : Svr_xmit<Array_ref<A, LEN> &> {};
358 template<typename A, typename LEN>
359 struct Is_valid_rpc_type< Array_ref<A, LEN> *> : L4::Types::False {};
362 template<typename A, typename LEN>
363 struct Is_valid_rpc_type< Opt<Array_ref<A, LEN> > > : L4::Types::False {};