1 #ifndef _SERVICE_MANAGER_H_
2 #error This file can not be compiled directly.
5 #include "libs/string.h"
9 template<typename ret_type
, typename arg_type1
, typename arg_type2
,
10 typename arg_type3
, typename arg_type4
, typename arg_type5
,
11 typename arg_type6
, typename arg_type7
>
12 service_manager::call
<ret_type
, arg_type1
, arg_type2
, arg_type3
, arg_type4
, arg_type5
, arg_type6
, arg_type7
>::call(const char *name
, const char *method
) {
14 services::service_manager
*sman
= services::service_manager::get_instance();
15 service
*serv
= sman
->get_object((service_type
*)sman
->get_type(name
));
17 for (i
= 0; i
< serv
->methods
.count
; i
++) {
18 if (!strcmp(serv
->names
[i
],method
)) {
19 base_delegate
*mth
= &(serv
->methods
[i
]);
20 memcpy(reinterpret_cast<char*>(this),reinterpret_cast<char*>(mth
),sizeof(delegate
<ret_type
, arg_type1
, arg_type2
, arg_type3
, arg_type4
, arg_type5
, arg_type6
, arg_type7
>));
26 template<typename ret_type, typename arg_type1 , typename arg_type2 ,
27 typename arg_type3 , typename arg_type4 , typename arg_type5 ,
28 typename arg_type6 , typename arg_type7 >
29 void* service::call<ret_type, arg_type1, arg_type2, arg_type3, arg_type4, arg_type5, arg_type6, arg_type7>::operator new(size_t size) {*/
30 /* Use resource instead of normal pointer. Resource shall allow to create few methods delegates
31 at the same time by allocating more memory when necessary */
32 /* return (void*)_ptrs;